본문으로 바로가기

Java8 Optional쓰는 법

category Language/JAVA 2018.06.12 14:19


Java8 Optional쓰는 법


1
2
3
4
5
6
7
UserDetailInfo USERDetailInfo1 = new UserDetailInfo();
String aa = Optional.ofNullable(USERDetailInfo1)
        .map(UserDetailInfo::getOrg)
        .map(Org::getLocation)
        .map(Location::getName)
        .orElse("");
assertEquals("", aa);
cs

이제 앱을 새로 개발을 하면 null을 최대한 안쓰고자 노력을 하는 중이다.


jackson으로 json을 pojo에 매핑해서 쓰는 경우가 많은데 json에 2레벨, 3레벨에 데이터가 없는 경우 NPE(Null Pointer Exception)가 나는 경우가 많다.


그래서 이걸 Optional을 안쓰고 하려면 각각 .get을 할 때마다 if(obj != null) 을 해주어야 하는데 이게 단계가 깊어지면 코드가 지저분해져서 처리 하기가 복잡해지고 배포를 하고 나서 장애가 난 후에야 비로소 코딩을 안하게 되는 문제가 있다.


그래서 Optional을 쓰면 .map()이걸로 하면 각 단계에서 Optional<Org>, Optional<Location>이 리턴 되고 마지막 .orElse()에서 default로 ""를 넣어 주기 때문에


String aa에 null이 들어갈 일이 없다.(믿자 믿습니다.)


end.






댓글을 달아 주세요