lombok을 사용하여 기존 개체에서 개체 만들기
다음과 같은 롬복 주석이 달린 클래스가 있다고 가정 해 보겠습니다.
@Builder
class Band {
String name;
String type;
}
나는 내가 할 수 있다는 것을 안다.
Band rollingStones = Band.builder().name("Rolling Stones").type("Rock Band").build();
기존 객체를 템플릿으로 사용하고 속성 중 하나를 변경하여 Foo의 객체를 생성하는 쉬운 방법이 있습니까?
다음과 같은 것 :
Band nirvana = Band.builder(rollingStones).name("Nirvana");
lombok 문서에서 이것을 찾을 수 없습니다.
toBuilder
매개 변수를 사용하여 인스턴스에 toBuilder()
메서드 를 제공 할 수 있습니다 .
@Builder(toBuilder=true)
class Foo {
int x;
...
}
Foo f0 = Foo.builder().build();
Foo f1 = f0.toBuilder().x(42).build();
에서 문서 :
@Builder를 사용하여 빌더를 생성하여 자체 클래스의 인스턴스를 생성하는 경우 (자신의 유형을 반환하지 않는 메소드에 @Builder를 추가하지 않는 한 항상 그렇습니다) @Builder (toBuilder = true)를 사용하여 생성 할 수도 있습니다. toBuilder ()라는 클래스의 인스턴스 메소드 이 인스턴스의 모든 값으로 시작하는 새 빌더를 만듭니다.
면책 조항 : 저는 롬복 개발자입니다.
기존 객체를 템플릿으로 사용하고 속성 중 하나 를 변경하여 Foo의 객체를 생성하는 쉬운 방법이 있습니까? ( 강조 광산 )
정말로 단일 속성을 변경하고 싶다면 더 멋지고 효율적인 방법이 있습니다.
@Wither
class Band {
String name;
String type;
}
Band nirvana = rollingStones.withName("Nirvana");
위더는 쓰레기를 만들지 않지만 하나의 필드 만 변경할 수 있습니다. 많은 필드를 변경하려면 다음을 사용할 수 있습니다.
withA(a).withB(b).withC(c)....
엄청난 양의 쓰레기 (모든 중간 결과)를 생성하지만 toBuilder
더 효율적이고 자연 스럽습니다.
참고 URL : https://stackoverflow.com/questions/47069561/build-an-object-from-an-existing-one-using-lombok
'developer tip' 카테고리의 다른 글
GitHub에서 원격 브랜치 만들기 (0) | 2020.12.14 |
---|---|
Centos / Linux 설정 logrotate 모든 로그에 대한 최대 파일 크기 (0) | 2020.12.14 |
Unix 명령 줄에서 디렉토리 및 하위 디렉토리의 아카이브를 반복적으로 압축 해제하는 방법은 무엇입니까? (0) | 2020.12.14 |
PHP에서 64 비트 정수를 사용하는 방법? (0) | 2020.12.14 |
JPA 구성에서 기본 스키마 이름을 설정하는 방법은 무엇입니까? (0) | 2020.12.14 |