자동 생성자

목표 @RequiredArgsConstructor가 동작하는 방식을 알아본다. @NoArgsConstructor, @RequireArgsConstructor, @AllArgsConstructor @NoArgsConstructor 파라미터가 없는 생성자를 만든다. final 필드가 있어서 불가능한 경우는 컴파일 오류가 발생한다. @NoArgsConstructor(force=true) 옵션을 줄 경우, 컴파일 오류가 발생하지 않고 모든 final 필드를 0, false, null로 초기화한다. @NonNull 이 붙어있는 어노테이션이 붙어있어도 검사하지 않으므로 유의해야된다. @RequiredArgsConstructor final 필드나 @NonNull 이 붙어있는 필드 중에 초기화 되지 않은 필드들을 파라미터로 가지는 생성자를 만든다. 이 경우에는 @NonNull 이 붙어있으면 널 검사를 하기 때문에, 생성자 파라미터에 null이 있으면 NullPointerException 이 발생한다....

2024-09-15 · 1 min · 127 words

Kotlin과 함께 사용시 발생할 수 있는 문제

배경 Kotlin과 Java를 혼용해서 사용하고, Java에서 롬복을 사용하고 있으면 문제가 발생할 수 있다. @Getter를 사용했음에도, Error: Cannot access ’name’: it is ‘private’ in “Person” 같이 프로퍼티에 접근할 수 없는 것을 확인할 수 있다. 이는 Lombok이 코드를 생성하는 단계보다 Kotlin 컴파일러가 코드를 컴파일 하는 과정이 먼저 이루어지기 때문에 발생하는 문제다. 아래 사진에서 Lombok 코드 생성은 Annotation Processing 단계에서 처리된다. 해결 방법 1. 빌드 전처리 과정에서 Delombok 실행 Lombok에서 제공해주고 있는 기능으로 Lombok 코드를 직접 먼저 실행하게 한다....

2024-09-15 · 1 min · 104 words