흔히 Java Instace 간 필드를 주입할 때에는 Setter 를 사용합니다. Member member = new Member(); member.setName("이름"); Member newMember = new Member(); // member 의 name 필드를 newMember 에 set newMember.setName(member.getName()); 그러나 시스템이 거대해지고 DTO, Entity 들이 많아지면서 우리는 이런 방법으로 일일이 매핑해주는 것이 어려워졌습니다. 그럴 시간에 치킨 한마리를 더 사먹는 것이 이득입니다. 이런 불편 사항을 해결해주고자 자바 진영에도 많은 유틸 라이브러리가 나와 있습니다. 오늘은 이 라이브러리에 대해 간단히 알아보려고 합니다. ObjectMapper B..
스프링 컨트롤러와 서비스를 분기 처리하고 시스템을 기동했는데 아래와 같은 로그 발생*************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | securityConfig defined in file [C:\Users\ehdgu\IdeaProjects\slack_practice\target\classes\com\slack\slack\appConfig\SecurityConfig.class] ↑ ↓ | jwtTokenProvider defin..
이 글의 대부분 출처는 아래와 같음을 먼저 밝힙니다. 다만, 내용을 필자가 사용하기 적절하게 수정하였습니다. 참고 부탁드립니다. https://danpatpang.github.io/tip/2018/04/12/Tip_java_comment/ [Tip] 주석을 다는 방법 · Dan pat pang 단팥빵을 좋아하는 개발자. 하고싶은 것도 배우고 싶은 것도 많은 평범한 대학생. danpatpang.github.io
출처 : https://jojoldu.tistory.com/407 @Request Body에서는 Setter가 필요없다? 회사에서 근무하던중 새로오신 신입 개발자분이 저에게 하나의 질문을 했습니다. POST 요청시에 Setter 가 필요없는것 같다고. 여태 제가 알던것과는 달라서 어떻게 된 일인지 궁금했습니다. 정말 jojoldu.tistory.com 위 링크에 가면 자세한 글을 읽을 수 있다. 간단하게 요약하자면, - POST 요청으로 받을 경우 : Jackson2HttpMessageConverter 라는 Converter가 json 을 java object로 변환하는데 이때 ObjectMapper를 사용하여 데이터 바인딩을 수행하기 때문에 setter가 필요 없다. - GET으로 요청을 받을 경우 :..
List<Integer> to int[] (Integer List to int Array) 변환 방법
2021.05.07
public static void main(String[] args) { List list = new ArrayList(); list.add(1); int[] ints = list.stream().mapToInt(i->i).toArray(); for (int i : ints) { System.out.println(i); } }
이는 배열의 정확한 크기는 알 필요가 없고, 정렬하는데까지 걸리는 회수 같은 것만 알면 될 때, 계산하기 쉽게 상대크기로 변환해둘 수 있다. 예를 들어서 {1000, 2000, 3000}은 {0,1,2}으로 변환하는 것이다. 소스 예제 // 상대크기를 이용해서 상대값으로 변환해주는 메소드 static int[] solve(int[] arr) { // perm 을 [0, ...,n-1] 의 순열로 변환한다. int size = arr.length; int[] result = new int[size]; // 배열 전체 반복 for (int i=0; i
자바 int[] 을 Integer[] 으로 배열 변경하기 (1.8) / int to integer array
2021.03.21
버전 : 자바 1.8 대상 int[] arr = {47, 61, 21, 94, 89, 41, 90, 78, 23}; 배열로 변경하기 Integer[] array = Arrays.stream(arr).boxed().toArray(Integer[]::new); 리스트로 변경하고 싶을 때 List list = Arrays.stream(arr).boxed().collect(Collectors.toList()); 이때 boxed 함수는 원시타입을 감싸서 래퍼클래스 (Integer, Double, Boolean 등등) 으로 구성된 stream을 만들어주는 클래스이다.
출처 : 나 메서드 참조란? 메소드 참조(method reference)는 람다 표현식이 단 하나의 메소드만을 호출하는 경우에 해당 람다 표현식에서 불필요한 매개변수를 제거하고 사용할 수 있도록 해준다. 세미콜론 두개(::)로 메소드를 참조할 수 있다. 그것은 아래와 같다. // 랜덤 값을 언제던 꺼낼 수 있도록 랜덤 메소드를 참조해둠 MathInterface i = Math::random; 중요한 점은 메소드를 호출하는 것이 아니라 그냥 참조 (언제든 호출 할 수 있도록 주소를 담아둠)만 하는 점이라는 것이다. 자바스크립트에서 함수 참조 이해를 돕기 위해 자바스크립트를 예시로 들었지만 자바스크립트를 모르신다면 넘기셔도 됩니다 자바스크립트(Javascript)에서 함수는 아래와 같은 방법으로 변수에 담을..
자바 (Java) 제네릭(Generic) 클래스에서 [Type parameter 'T' cannot be instantiated directly] - 비전공개발자
2021.03.11
환경 : jdk 1.8 자바 제네릭 클래스를 만들 때, 특히 생성자에서 제네릭으로 받은 타입의 객체를 new 키워드를 사용해서 초기화 해주고 싶은 경우가 있다. 예를 들어 public class MyClass { private T type = null; public MyClass() { this.type = new T(); // error => Type parameter 'T' cannot be instantiated directly } } 위와 같이 에러가 난다. 제네릭 타입으로 받는 클래스는 어떤 방법으로 생성해야할지 모르므로(기본생성자가 없을수도 있으므로) 위와 같이 사용하는 것을 허용하지 않는 것이다. 만약 굳이 생성자 내부에서 제네릭으로 받을 객체를 생성해야 한다면, 형변환을 이용해볼 수 있다...