개발/java
[JAVA ] Optional isPresent/ifPresent
카앙구운
2021. 4. 29. 10:21
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
반응형