롬복에서 하나의 세터 / 게터 생략


232

롬복에서 데이터 클래스를 사용하고 싶습니다. 약 12 개의 필드가 있기 때문에 @Data모든 세터와 게터를 생성하기 위해 주석을 달았습니다 . 그러나 접근자가 구현되기를 원하지 않는 특별한 필드가 하나 있습니다.

롬복은 어떻게이 분야를 생략합니까?

답변:


415

@Getter@Setter주석에 액세스 수준을 전달할 수 있습니다 . 게터 나 세터를 보호하거나 비공개로 만드는 데 유용합니다. 기본값을 재정의하는 데에도 사용할 수 있습니다.

을 사용하면 @Data기본적으로 접근 자에 대한 공개 액세스 권한이 있습니다. 이제 다음과 같이 특수 액세스 수준 NONE을 사용하여 접근 자를 완전히 생략 할 수 있습니다 .

@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;

1
완전한. 개인 필드가 POJO이고 @Delegate ()로 주석이 달린 경우 속성 세트를 별도의 재사용 가능한 클래스로 추출하는 데 사용할 수 있습니다. 이는 여러 클래스 (속성 추가를위한 믹스 인 종류)에 동일한 속성 집합을 적용하는 데 유용 할 수 있습니다. 예를 들어, 다양한 XML 요소의 모델링에 적용될 수있는 속성 세트를 나타내는 믹스 인.
xorcus

빌더에서 하나의 필드를 생략하는 것과 비슷한 것이 있습니까?
zt1983811

1
빌더에 속성이 표시되지 않아야 함을 의미합니까? 아니요, 이에 대한 직접적인 것은 없습니다. 그것은 @Builder클래스뿐만 아니라 함수와 생성자에도 적용될 수 있으며 해당 함수의 서명에 나타나는 속성 설정 만 제공합니다.
Michael Piefel

@Data에 기본적으로 setter 및 getter가 포함되는이 속성에 대해 setter 및 getter를 구현하지 않습니다. 을 언급하면 ​​제외됩니다 AccessLevel.NONE.
Ram

41

@Data description 에 따르면 다음을 사용할 수 있습니다.

생성 된 모든 게터와 세터는 공개됩니다. 액세스 수준을 무시하려면 명시 적 @Setter 및 / 또는 @Getter 주석으로 필드 나 클래스에 주석을 답니다. 또한이 어노테이션을 사용하여 (액터 레벨 .NONE과 결합하여) 게터 및 / 또는 세터 생성을 완전히 억제 할 수 있습니다.


-3

setter 및 getter를 비공개로 설정 한 경우 PMD 검사에 나타납니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.