public final class Optional<T>{
private final T value; // T타입의 참조변수
옵셔널을 사용하는 이유 :
- 모든 종류의 객체 저장가능
- null 저장 가능 (nullPointException 을 막아줄 수 있다. ) !!!!!제일 중요!!!!!!!
- null 체크 ( if문 ) 필수 (nullPointException 체크 = 코드길어짐)
ex) if (result != null) - 해결방안 : 옵셔널에 null을 담아 옵셔널의 value값을 null 지정 [result t; (t안에 null을 담아서 NullPointException 해결)]
어떤 객체의 주소가 있으니 항상 null이 아니다.
- null 체크 ( if문 ) 필수 (nullPointException 체크 = 코드길어짐)
Optional<T> 객체 생성방법 :
1. String str = "abc";
2. Optional<String> optVal = Optional.of(str);
🌟3. Optional<String> optVal = Optional.of("abc"); // 1,2 번 합친 것
4. Optional<String> optVal = Optional.of(null); //NullPointException 발생
5. Optional<String> optVal = Optional.ofNullable(null); // Ok (대부분 null일수 있는 값을 다루기 때문에 5번 사용.)
null 을 최소화 하자 !!
Optional 객체의 값 가져오기 :
1. Optional <String> optVal = Optional.of("abc");
2. String str1 = optVal.get(); // Optional 객체의 값을 가져온다. null 이면 예외발생 잘 안씀
🌟3. String str2 = optVal.orElse(""); // Optional 객체의 값을 가져온다. null 이면 ""(빈문자) 반환
4. String str3 = optVal.orElseGet(String::new); // 람다식 사용가능 () -> new String()
5. String str4 = optVal.orElseThrow(NullPointException :: new); //널이면 예외발생
성능향상을 위한 옵셔널들 --
OptionalInt , OptionalLong , OptionalDouble
public final class OptionalInt {
private final boolean is present; // 값이 저장되어 있으면 true
private final int value; //int 타입의 변수
OptionalInt 의 값 가져오기 - int getAsInt()
타입 호출방법
Optional<T> : T get()
OptionalInt int getAsInt()
OptionalLong Long getAsLong()
OptionalDouble Double getAsDouble()
빈 Optional 객체와의 비교
OptionalInt opt = OptionalInt.of(0); //OptionalInt에 0을저장
OptionalInt opt2 = OptionalInt.empty(); //OptionalInt에 0을저장
apt.eqauls(opt2); // false (직접 넣은 0과 자동으로 0으로 할당된 것은 다르기 때문.)
'개-발 > Java + Spring + Kotlin' 카테고리의 다른 글
[JAVA] Stream / 중간연산 (0) | 2022.12.12 |
---|---|
[JAVA] 컬렉션 프레임워크 ( Map ) (0) | 2022.12.04 |
[JAVA] 컬렉션 프레임워크 ( List, Set ) (0) | 2022.12.04 |
[JAVA] 객체지향설계 SOLID 원칙 (0) | 2022.12.04 |
[JAVA] Lambda 람다표현식 (0) | 2022.12.01 |