programing

롬복(lombok)을 사용하여 기존 객체에서 객체 만들기

bestcode 2022. 7. 11. 22:14
반응형

롬복(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");

롬복 문서에서는 찾을 수 없습니다.

를 사용할 수 있습니다.toBuilderinstance를 지정하는 파라미터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()라는 클래스의 인스턴스 메서드를 생성할 수도 있습니다. 이 메서드는 toBuilder()의 모든 값으로 시작됩니다.의 인스턴스

면책사항:저는 롬복 개발자입니다.

기존 객체를 템플릿으로 사용하여 Foo의 객체 중 하나의 속성을 변경하는 쉬운 방법이 있습니까?(내 것을 제외)

하나의 속성을 정말로 변경하고 싶다면 더 좋고 효율적인 방법이 있습니다.

@With
class Band {
   String name;
   String type;
}

Band nirvana = rollingStones.withName("Nirvana");

시드는 쓰레기를 만들지 않지만 하나의 필드만 바꿀 수 있습니다.여러 필드를 변경하려면 다음을 사용할 수 있습니다.

withA(a).withB(b).withC(c)....

(모든 중간 결과) 엄청난 양의 쓰레기를 생산하지만toBuilder보다 효율적이고 자연스럽다.

메모: 이전 버전의 롬복에서는@Wither주석입니다.문서의 선두를 참조해 주세요.

또한 다음을 사용하여 개체의 복사본을 수행할 수도 있습니다.com.fasterxml.jackson.databind.ObjectMapper

@AllArgsConstructor
@Setter
class Band {
    String name;
    String type;
}

ObjectMapper objectMapper = new ObjectMapper(); //it's configurable
objectMapper.configure( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false );
objectMapper.configure( SerializationFeature.FAIL_ON_EMPTY_BEANS, false );

Band rollingStones = new Band("Rolling Stones", "Rock Band");

Band nirvana = objectMapper.convertValue( rollingStones, Band.class);
nirvana.setName("Nirvana");

프로젝트 전체에서 사용하기 위한 몇 가지 유틸리티 방법으로 쉽게 포장할 수 있습니다.ConvertUtils.clone(rollingStones, Band.class)

언급URL : https://stackoverflow.com/questions/47069561/build-an-object-from-an-existing-one-using-lombok

반응형