Programming/Java
롬복 @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
helloworld:
2021. 9. 18. 03:50
@NoArgsConstructor
- 매개변수가 없는 생성자를 만든다
- 그런데 만약 (예를 들어 final 필드로 인해) 매개변수가 없는 생성자를 만드는 것이 불가한 경우에는 컴파일 에러 발생(@NoArgsConstructor(force = true)로 설정하여 final 필드들을 0 / false / null 로 초기화 하지 않는 한)
- 주로 @Data 또는 다른 생성자 어노테이션들과 조합하여 유용하게 사용된다.
- @NonNull과 같이 필드 제약조건이 있는 경우, 필드가 적절히 초기화 되지 않는 한 제약조건 로직이 실행되지 않는다.
@RequiredArgsConstructor
- 초기화되지 않은 final 필드, 초기화되지 않은 @NonNull 필드에 대한 파라미터 생성자
- 각각의 필드 당 하나의 매개변수를 받는 생성자를 만든다.
- @NonNull 필드는 널 체크 실행된다. null 값이 들어오면 NullPointerException이 발생한다.
- 생성자의 매개변수 순서는 클래스에 정의한 필드 순서와 일치한다.
@AllArgsConstructor
- 클래스 내의 모든 필드들에 대해 각각 하나의 매개변수를 받는 생성자 생성
- @NonNull 필드의 경우 해당 매개변수를 받으면 null 체크 시행