Java Optional

별의개발자커비·2023년 3월 11일
0

Java

목록 보기
61/66
post-thumbnail

Optional이란?

  • 예) 타입이 string이면 string 객체긴 한데 null 일 때의 경우에 대한 기능을 갖고있다는 차이

구현

  • ofNullable: null이 될 수도 있다

    	Optional< String > o = Optional.ofNullable(s1);

종류

  • Optional
  • OptionalInt
  • OptionalDouble
						// 구현방법 .of()
		OptionalInt i = OptionalInt.of(100);
		OptionalDouble d = OptionalDouble.of(3.14);
		Optional<String> s = Optional.of("apple");

		System.out.println(i.getAsInt());
		System.out.println(d.getAsDouble());
		System.out.println(s.get());
		
		System.out.println(i);
		System.out.println(d);
		System.out.println(s);
  • 실행결과

    100
    3.14
    apple
    
    OptionalInt[100]
    OptionalDouble[3.14]
    Optional[apple]

optional 객체(예:o)의 기능

  • o.isPresent: null 아닌지 확인 (boolean)
  • o.get() : 값 가져오기
package day7;

import java.util.Optional;
import java.util.OptionalDouble;
import java.util.OptionalInt;

public class OptionalDemo1_5 {
	public static void main(String[] args) {
		String s1 = "hi";
		Optional<String> o = Optional.ofNullable(s1);
//		System.out.println(o);
		if ( s1 != null ) {
			Util.print(s1);
		}
		else {
			Util.print(null);
		}
		
		if  ( o.isPresent() ) {
			Util.print(o.get());
		} 
		else {
			Util.print("null");
		}
		

}
}

예제 1

  • OptionalDouble.empty()의 사용
  • trycatch를 써야했던 걸 간단하게 empty로 표현되게 할 수 있다.

public class OptionalDemo2_6 {
	public static OptionalDouble divide( double x, double y ) {
		return y==0? OptionalDouble.empty() : OptionalDouble.of(x/y) ; 
		
 	}

	public static void main(String[] args) {
		System.out.println(divide(2, 0));
		System.out.println(divide(4, 2));
	}

}
//  y == 0 ? OptionalDouble.empty() : OptionalDouble.of(x/y);
// trycatch를 써야했던 걸 간단하게 empty로 표현되게 할 수 있다.

0개의 댓글