반응형
Java Lombok:@AllArgsConstructor에서 필드 하나를 생략하시겠습니까?
Lombok을 사용하여 @AllArgsConstructor를 지정하면 선언된 (최종, 정적 아님) 필드를 모두 설정하기 위한 컨스트럭터가 생성됩니다.일부 필드를 생략하고 다른 모든 필드에 대해 생성된 생성자를 남길 수 있습니까?
아니, 그건 불가능해.를 작성하기 위한 기능 요청이 있습니다.@SomeArgsConstructor여기서 관련 필드 목록을 지정할 수 있습니다.
완전 공개:저는 롬복 프로젝트의 핵심 개발자 중 한 명입니다.
또는 다음을 사용할 수 있습니다.@RequiredArgsConstructor다음 중 하나에 해당하는 모든 필드의 생성자가 추가됩니다.@NonNull또는final.
매뉴얼을 참조
혹시나 해서 초기화가 되어 있습니다.final필드는 제외됩니다.
@AllArgsConstructor
class SomeClass {
final String s;
final int i;
final List<String> list = new ArrayList<>(); // excluded in constructor
}
var x = new SomeClass("hello", 1);
특히 컬렉션 또는 기타 가변 클래스에 적합합니다.
이 솔루션은 다른 솔루션과 함께 사용할 수 있습니다.@RequiredArgsConstructor:
@RequiredArgsConstructor
class SomeClass2 {
final String s;
int i; // excluded because it's not final
final List<String> list = new ArrayList<>(); // excluded because it's initialized
}
var x = new SomeClass2("hello");
경우에 따라서는 이 방법을 사용하는 것이 좋습니다.@Builder
이것은 lombok @RequiredArgsConstructor와 @NonNull의 두 가지 주석을 사용하여 수행할 수 있습니다.
다음과 같이 예를 들어주세요.
package com.ss.model;
import lombok.*;
@Getter
@Setter
@RequiredArgsConstructor
@ToString
public class Employee {
private int id;
@NonNull
private String firstName;
@NonNull
private String lastName;
@NonNull
private int age;
@NonNull
private String address;
}
그런 다음 다음과 같이 개체를 만들 수 있습니다.
Employee employee = new Employee("FirstName", "LastName", 27, "Address");
언급URL : https://stackoverflow.com/questions/23761242/java-lombok-omitting-one-field-in-allargsconstructor
반응형
'source' 카테고리의 다른 글
| MySQL 데이터베이스에 안전하게 연결하는 방법 (0) | 2022.09.05 |
|---|---|
| MySQL/MariaDB - 쿼리의 HAVING 부분 내에서 SELECT 쿼리의 필드 값을 덮어씁니다. (0) | 2022.09.05 |
| python/numpy를 사용하여 백분위수를 계산하는 방법은 무엇입니까? (0) | 2022.09.04 |
| EC2-classic의 소스 끝점과 관련된 AWS DMS 문제 (0) | 2022.09.04 |
| Android에서 c++에서 Java 메서드 호출 (0) | 2022.09.04 |