Optinal은 자바 8부터 도입된 클래스이다. 값이 존재할 수도 있고 존재하지 않을 수도 있는 경우에 사용된다.
null을 직접 다루는 것보다 안전하고 명확한 코드를 작성할 수 있으며 적절히 사용하면 가독성이 좋아진다.
of로 옵셔널 객체 생성이 가능하며 get으로 객체를 언박싱 할 수 있다.
String a = "hello";
// 옵셔널 객체 생성
Optional<String> optional = Optional.of(a);
// String 객체로 꺼내기
System.out.println(optional.get());
ofNullable로 비어있는 옵셔널 객체로도 생성이 가능하다.
Optional<Integer> nullOptional = Optional.ofNullable(null);
isPresent로 객체가 비어있는지도 확인 가능하다.
// 비어있는 옵셔널 객체 생성하기
Optional<String> emptyOptional = Optional.empty();
// isPresent로 객체가 비어있는지 확인 가능하다.
boolean is_present = emptyOptional.isPresent();
// 출력
System.out.println("isPresent = " + is_present);
ifPresent로 값이 존재할 경우 주어진 동작을 실행 시킬 수 있다.
// 값이 존재할 경우 주어진 동작을 실행
optional.ifPresent(
value -> System.out.println("값이 있습니다.")
);
반대로 orElseGet은 값이 null일 경우 주어진 동작이 가능하다.
// 값이 없는 경우에만 실행하는 orElseGet, 다른 계산들도 가능
String value = emptyOptional.orElseGet(() -> {
System.out.println(emptyOptional.isEmpty());
return "값이 없습니다.";
});
orElse는 null일경우 값을 바로 반환한다.
System.out.println(emptyOptional.orElse("값이 없어서 반환됨"));
orElseThrow는 예외처리가 가능하다. try 구문 2행은 실행되지 않는다.
try {
String var = emptyOptional.orElseThrow(() -> new IllegalStateException("값이 없어서 예외 발생"));
System.out.println("실행되지 않는다");
}catch (IllegalStateException e){
System.out.println(e.getMessage());
}
'Language > Java' 카테고리의 다른 글
[Java] Collection Framework 총 정리 (1) | 2023.12.26 |
---|---|
[Java] Interface 정리(2) (0) | 2023.07.18 |
[Java] InterFace 정리(1) (0) | 2023.07.17 |
[Java] 자바 상속 정리 (0) | 2023.07.14 |
[Java] foreach문 사용하기 (0) | 2023.07.12 |