<
T>public final class Optional<T>
{
private final T value; //T타입의 참조변수
...
}
지금까지 널을 다루려면
1.nullPopintException
2.null을 if문으로 체크
하여 사용하였음
<
T> 객체 생성하기<T>
객체를 생성하는 다양한 방법String str = "abc";
Optional<String> optVal = Optional.of(str);
Optional<String> optVal = Optional.of("abc");
Optional<String> optVal = Optional.of(null); //NullPointerException 발생
Optional<String> optVal = Optional.ofNullable(null); //ok
<T>
객체를 사용하자Optional //널로 초기화, 바람직하지 않음<String>
optVal = null;
Optional<String>
optVal = Optional.<String>
empty(); //빈 객체로 초기화
Optional<String> optVal = Optional.of("abc");
String str1 = optVal.get(); //optVal에 저장된 값을 반환. null이면 예외 발생
String str2 = optVal.orElse(""); //optVal에 저장된 값이 null일 때는, ""를 반환
String str3 = optVal.orElseGet(String::new); //람다식 사용가능 ()-> new String()
String str4 = optVal.orElseThrow(NullPointerException::new); //널이면 예외 발생
public final class OptionalInt{
private final boolean isPresent; // 값이 저장되어 있으면 true
private final int value; // int타입의 변수
}
OptionalInt opt = OptionalInt.of(0); //OptionalInt에 0을 저장
OptionalInt opt2 = OptionalInt.empty(); //OptionalInt에 0을 저장
System.out.println(opt.isPresent()); //true
System.out.println(opt2.isPresent()); //false
System.out.println(opt.equals(opt2)); //false