JAVA - Optional<T>

jodbsgh·2022년 5월 3일
0

💡"JAVA"

목록 보기
64/67

T타입 객체의 래퍼클래스 - Optional<T>

public final class Optional<T>
{
	private final T value;	//T타입의 참조변수
    	...
        
}

지금까지 널을 다루려면
1.nullPopintException
2.null을 if문으로 체크
하여 사용하였음

Optional<T> 객체 생성하기

Optional<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

null 대신 빈 Optional<T>객체를 사용하자

Optional<String> optVal = null; //널로 초기화, 바람직하지 않음

Optional<String> optVal = Optional.<String>empty(); //빈 객체로 초기화

Optional 객체의 값 가져오기 - get(), orElse(), orElseGet(), orElseThrow()

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); //널이면 예외 발생

isPresent() - Optional객체의 값이 null이면 false, 아니면 true를 반환

OptionalInt, OptionalLong, OptionalDouble

기본형을 감싸는 래퍼 클래스

public final class OptionalInt{
	private final boolean isPresent;	// 값이 저장되어 있으면 true
    private final int value;			// int타입의 변수
}

OptionalInt의 값 가져오기 - int getAsInt()

Optional 객체와의 비교

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
profile
어제 보다는 내일을, 내일 보다는 오늘을 🚀

0개의 댓글