객체를 담을 수 있는 래퍼 클래스이다. 지네릭 클래스로 모든 reference variable
을 담을 수 있다.
장점
결과가 null 인지 매번 if 문으로 체크할 필요 없이 Optional에 정의된 메서드를 통해 간단히 처리 할 수 있다.
제일 기본적인 생성 방법이다. 하지만 담기는 reference variable
이 null
일 수 도 있다면 해당 메서드는 사용하지 않는다.
String s = "abc";
Optional<String> op1 = Optional.of(s);
Optional<String> op2 = Optional.of("abc");
Optional<String> op3 = Optional.of(new String("str"));
reference variable
이 null
일 수도 있다면 해당 메서드를 사용한다.
Optional<String> ofNullalbeOpt = Optional.ofNullable(null);
기본적으로 null
로 초기화 할 수 있다. 하지만 권장되는 방법은 아니다.
Optional<String> optVal = null;
empty()
를 통해 Optional
을 초기화하는 것이 권장하는 방법이다.
Optional optVal = Optional.empty();
Optional<String> opAbc = Optional.of("abc");
String str1 = opAbc.get();
System.out.println("str1 = " + str1);
가져오는 값이 null
일수도 있을 때, 해당 메서드를 사용한다.
Optional str = Optional.of("abc")
String getOrElse = str.orElse(""); // 결과 값: abc
Optional<Object> nullOp = Optional.ofNullable(null);
Object o = nullOp.orElse(1);
System.out.println("o = " + o); // 결과값 : 1
Optional
에 담은 reference variable
이 null
인 경우는 매개변 수에 설정한 값을 반환한다.
파라미터에 람다식을 넣어 null
을 대체 할 수 있다.
Optional nullOp = Optional.ofNullable(null);
Optional orElseGetVar = nullOp.ofElseGet(String:new);
Optional
에 담긴 값이 null
이라면 예외를 지정하여 발생시킬 수 있다.
Optional<Object> orElseThrowVar = Optional.ofNullable(null);
orElseThrowVar.orElseThrow(NullPointerException::new);
Optioanl
의 값이 null
이면 false
를 아니면 true
를 반환하는 메서드이다.
Optional<Object> nullOpt = Optional.ofNullable(null);
if(nullOpt.isPresent()) {
System.out.println("null이 아닙니다.");
} else {
System.out.println("null 입니다.");
}
Opational
값이 있다면 파라미터로 받은 람다식을 실행하고 없다면 실행하지 않는다.
Optional<String> str = Optional.of("str");
str.ifPresent(System.out::println); // 결과 값 : str