사용자 도구

사이트 도구


java:lombok

Lombok

Gradle-Lombok

  • 혹은 다음과 같이 직접 설정
    compileOnly 'org.projectlombok:lombok:1.18.12'
    annotationProcessor 'org.projectlombok:lombok:1.18.12'
    
    testCompileOnly 'org.projectlombok:lombok:1.18.12'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'

javac 메모리 문제

Disable Field

  • AccessLevel.NONE 설정으로 특정 필드 등에 대한 자동 메소드 생성을 막을 수 있다.
    // 모든 필드에 대해 Getter/Setter를 생성하지만 age 필드의 Setter는 생성하지 않는다.
    @Data
    public class Person {
        @Setter(AccessLevel.NONE)
        private int age;
    }

Maven 설정

주의점

  • 상호 참조하는 객체의 경우 toString() 호출시 Stack Overflow 가 발생할 수 있다. 한쪽 객체에서 다른 쪽 객체에 대해 @ToString(excluded={“propertyName”}) 형태로 출력시 제외토록 만들어야 한다.
  • @EqualsAndHashCode(of = {})로 꼭 필요한 필드만 비교하도록 처리한다.

PMD 문제 회피

  • Lombok으로 Getter/Setter를 만들면 PMD에서 Unused private field로 표시가 된다.
    @Data
    @SuppressWarnings("PMD.UnusedPrivateField")
    public class LombokUseClass {
    }
  • Signualr Field로 표시될 때는
    @Data
    @SuppressWarnings("PMD.SingularField")
    public class LombokUsedClass {
        private String field;
    }

Checkstyle 문제 회피

  • HideUtilityClassConstructor
    @SuppressWarnings("checkstyle:HideUtilityClassConstructor")

equals & hashCode Code Coverage

  • 다른 클래스를 상속할 때, 부모 클래스의 equals&hashCode를 그대로 사용하고자 하는 상황에서 Java FindBugs의 경고를 회피하려면 자식 클래스 쪽에 다음과 같이 설정한다.
    @EqualsAndHashCode(callSuper = true, of = {})
    • 여기서 of = { }를 넣지 않으면, 자식 클래스의 모든 필드가 비교 대상으로 들어가 버리게 된다.

Custom Handler

Default Value Builder & ETC

Delombok

  • 1.4 이하 Ant 태스크 : lombok.delombok.ant.DelombokTask
  • 1.6 이상 Ant 태스크 : lombok.delombok.ant.Tasks$Delombok
java/lombok.txt · 마지막으로 수정됨: 2020/07/09 15:38 저자 kwon37xi