본문 바로가기
개발/java

[JAVA ] Optional isPresent/ifPresent

by 카앙구운 2021. 4. 29.
728x90
반응형

자바 8에 추가된 Optional isPresent는  ! = null 과 같은 코딩을 줄일 수 있다.

결과적으는 반환값 없음 을 듯하며 null을 반환하면서 발생되는 오류를 줄이고자하기 위해서 만들었다고 한다.

Member member = memberRepository.findById(id);
if (member != null) {
    if (member.isAdmin()) {
        member.addAdminPermissions();
    } else {
        member.addDefaultPermissions();
    }
}

memberRepository 에서 데이터 조회하고 해당 메서드의 반환값이 null 인 경우 위와 같이 member  != null 형태로 썼다.

하지만 이런 경우 오류를 야기시키질 수 있는 메서드 반환타입이였다.

그래서 아래와 같이 해결방법에 나선 것이다.

Member member = memberRepository.findById(id);
Optional<Member> memberOptional = Optional.ofNullable(member);
if (memberOptional.isPresent()) {
    if (member.isAdmin()) {
        member.addAdminPermissions();
    } else {
        member.addDefaultPermissions();
    }
}

조회한 메소드 반환값을 Optional로 감싸고 isPresent()로 반환하여 boolean 값으로 if문을 채운다.

Optional<Member> memberOptional = memberRepository.findById(id);
memberOptional.ifPresent(member -> {
    if (member.isAdmin()) {
        member.addAdminPermissions();
    } else {
        member.addDefaultPermissions();
    }
});

더 코드를 짧게 하기 위해서 람다식으로 변환이 가능하다.

memberOptional.ifPresent 메소드로 함수식으로 변환하여 사용 가능하다.

 

728x90
반응형

댓글