Java - Lombok 사용시 주의점
2020. 1. 28. 15:32ㆍ카테고리 없음

다들 알고 있는 내용일 수 있겠지만, 이번에 개발하면서 알게된 Lombok 사용시 이슈 사항이다. 해당 이슈사항은 boolean, Boolean 타입을 사용하면서 prefix가 isXX인 필드를 사용할때이다.
1 2 3 4 5 6 7 8 | @Data public class Test { private boolean isBoolean; private void test() { this.isBoolean(); this.setBoolean(); } } | cs |
사실 네이밍이 잘못된 것 일수도 있다. 하지만 필자는 get가 isIsBoolean()으로 나올 것을 기대했지만, 위의 결과는 is를 생략한 isBoolean으로 getter를 생성한다. setter도 마찬가지이다. 이번에는 래퍼타입의 Boolean일 경우이다.
1 2 3 4 5 6 7 8 9 | @Data public class Test { private Boolean isBoolean; private void test() { this.getIsBoolean(); this.setIsBoolean(); } } | cs |
위의 결과는 첫번째 결과와 아예다른 네이밍으로 getter/setter를 생성한다. 그렇다면 마지막으로 Intellij에서 생성해주는 getter/setter의 경우를 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class Test { private Boolean isBoolean; public Boolean getBoolean() { return isBoolean; } public void setBoolean(Boolean aBoolean) { isBoolean = aBoolean; } } public class Test { private boolean isBoolean; public boolean isBoolean() { return isBoolean; } public void setBoolean(boolean aBoolean) { isBoolean = aBoolean; } } | cs |
이처럼 boolean 필드에 isXX prefix를 넣은경우는 어떤 타입을 사용하냐, 혹은 IDEA의 자동완성을 쓰냐 혹은 Lombok을 쓰냐에 따라 getter/setter의 네이밍이 다르게 설정될 수 있다는 것을 유의하자. 필자는 이러한 점을 모르고 사용하였다가, Mapstruct로 오브젝트를 변환하는 코드에서 삽질을 무척했다.