optional 객체
Optional 객체는 NPE가 발생하지않도록 하기위해 사용한다.
public class Optional_test {
public static void main(String[] args) {
Optional<String> stropt = Arrays.asList("dsg", "kmb").stream().findFirst(); // .findFirst() : 먼저나온것을 가져온다
// 1) .get() : Optional 객체에서 값을 가져올때
System.out.println("1) stropt : " + stropt.get());
// 2) .orElseGet() : Optional 객체에 값에 상관없이 새 객체로 생성할때
System.out.println("2) stropt : " + stropt.orElseGet(String::new));
// 3) .orElseThrow() : null을 허용하지않을때 null이 넘어올경우 발생시킬 예외를 지정해줄때
System.out.println("3) stropt : " + stropt.orElseThrow(IllegalArgumentException::new));
// 4-1) .of() : 특정값을 보낼때 NPE 발생할수있음 vs ofNullable(), ifPresent()
//Optional.of(null).ifPresent(s -> System.out.println(s));
// 4-2) ofNullable() : null이 있더라도 NPE 발생하지않고 아무것도 안나옴 --> 즉 null 이 발생할수도있는 값이 들어올때 방어로직으로 사용
Optional.ofNullable(null).ifPresent(s -> System.out.println(s)); // 아무값도 안나옴(빈공간)
// 4-3) .ofNullable() : ofNullable()내부의 매개변수값이 null 이면 --> Optional.empty
String str = null;
var str1 = Optional.ofNullable(str);
System.out.println("4-3) str1 : " + str1); // str1 : Optional.empty
// 4-3) ofNullable().orElse() : ofNullable() 내부의 매개변수값이 null이라면 .orElse() 메서드 활용해서 어떤 메세지를 나오게 할지 정함
var str2 = Optional.ofNullable(str).orElse("null");
System.out.println("4-3) str2 : " + str2);
// 4-4) Wrapper 클래스는 null 값을 허용
Integer int1 = null;
var integer = Optional.ofNullable(int1).orElse(0);
System.out.println("4-4) integer : " + integer);
}
}
결과는 다음과 같다
Author And Source
이 문제에 관하여(optional 객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minbo2002/optional-객체저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)