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
반응형
'개발 > java' 카테고리의 다른 글
이클립스 원하는 라인으로 이동하는 방법 (0) | 2022.09.19 |
---|---|
java 8 람다식 :: 기호 (0) | 2021.04.26 |
[Spring boot 시작하기] Spring boot 설치 및 프로젝트 생성 (0) | 2021.04.21 |
Map에서 가지고 온 값 Integer형으로 변경 (0) | 2020.10.23 |
BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext (0) | 2020.08.05 |
댓글