[JAVA] Optional<T>

2021. 6. 23. 06:00ใ†๊ฐœ๋… ์ •๋ฆฌ ์ž‘์—…์‹ค/Java

728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”? ์ฃผ๋‹ˆํ•˜๋ž‘ ์ž…๋‹ˆ๋‹ค!

์˜ค๋Š˜์€ Optional์ด๋ผ๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•œ๋ฒˆ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 


 

 

๐Ÿ“Œ Optional์ด๋ž€?


๐Ÿ‘‰ T Type ๊ฐ์ฒด์˜ ๋ž˜ํผํด๋ž˜์Šค - Optional<T>

๋ž˜ํผ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด ๋ž˜ํผ ํด๋ž˜์Šค ํ”ผ๋“œ์— ๊ด€์‹ฌ์„ ์ฃผ์„ธ์š”!

Public final class Optional<T>	{
	private final T value;		// T ์ž๋ฃŒํ˜• ํƒ€์ž…์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜ Value ์„ ์–ธ
    		....
}

 

์—ฌ๊ธฐ์„œ T ํƒ€์ž…์€ ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , Null ๋˜ํ•œ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

   ๐Ÿ“ Optional์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 


๐Ÿ‘‰ Null์„ ์ง์ ‘ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•˜๊ธฐ ๋•Œ๋ฌธ

     ๐Ÿ’ฌ Null์„ ์ž˜ ๋ชป ๋‹ค๋ฃจ๊ฒŒ ๋˜๋ฉด Null Point Exception์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์—์š”! ๊ทธ๋ž˜์„œ ๊ฐ์ฒด์•ˆ์— ๋‹ด์•„์„œ ๊ฐ„์ ‘์ ์œผ๋กœ Null์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ต๋‹ˆ๋‹ค!

๐Ÿ‘‰ Null์„ ์ง์ ‘ ๋‹ค๋ฃจ๊ฒŒ ๋˜๋ฉด Null Check ์‚ฌ์šฉ ํ•„์š”

     ๐Ÿ’ฌ Null Check ์‹œ if๋ฌธ์„ ํ•„์ˆ˜๋กœ ์“ฐ๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์—์š”.

Object result = getResult();

์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ๋ฐ˜ํ™˜๊ฐ’์€ ๋‘˜ ์ค‘์— ํ•˜๋‚˜๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋  ๊ฒƒ์ด์—์š”.

     ๐Ÿ’ฌ Null

     ๐Ÿ’ฌ ๊ฐ์ฒด

 

 

Null์ด ๋ฐ˜ํ™˜๋˜๊ฒŒ ๋œ๋‹ค๋ฉด Null Point Exception์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— if๋ฌธ์„ ํ†ตํ•ด Null ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•ด ์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

if ( result != null ) {		// Null Check if๋ฌธ
	System.out.println( result.toString)
}

์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด Null์ด ๋ฐ˜ํ™˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ๋Š” ์กฐ๊ฑด์‹์„ ํ†ตํ•ด ๊ทธ ๊ฐ’์„ ๊ผญ ํ™•์ธ ํ•ด ์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

optional์„ ์ด์šฉํ•˜๊ฒŒ ๋˜๋ฉด result์— Null์ด ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ result ์•ˆ์— optional์„ ๋„ฃ์€ ๋’ค ๊ทธ ์•ˆ์— Null์„ ๋„ฃ์œผ๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด result๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” optional์€ ๋ฌด์กฐ๊ฑด ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ€ Null์ด๋”๋ผ๋„ result๋Š” ์–ธ์ œ๋‚˜ Null์„ ๊ฐ–์„ ์ˆ˜ ์—†๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ Null Point Exception์ด๋‚˜, Null Check ๋‹จ๊ณ„๊ฐ€ ์—†์–ด์ง€๊ฒŒ ๋˜๋ฏ€๋กœ, ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด ์ง€๊ณ , Null์˜ ์œ„ํ—˜์œผ๋กœ๋ถ€ํ„ฐ ์ž์œ ๋กœ์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

 

   ๐Ÿ“ Optional<T> ๊ฐ์ฒด ์ƒ์„ฑ


String str = "abc";

Optional<String> optVal = Optional.of(str);
Optional<String> optVal = Optional.of("abc");
Optional<String> optVal = Optional.of(null);			// Null Point Exception ๋ฐœ์ƒ
Optional<String> optVal = Optional.ofNullable(null);	// ์ •์ƒ

 

์ฒซ๋ฒˆ์งธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด optVal์€ Optional ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด๊ณ , Optional ๊ฐ์ฒด optVal์—๋Š” "abc"๊ฐ€ ๋‹ด๊ธด ์ฃผ์†Œ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด์—์š”. ๊ทธ๋ž˜์„œ ์ •์ƒ์ž…๋‹ˆ๋‹ค.

๋‘๋ฒˆ์งธ ์ฝ”๋“œ๋Š” String str = "abc";์™€ ์ฒซ๋ฒˆ์งธ ์ฝ”๋“œ๋ฅผ ํ•ฉ์นœ ์ฝ”๋“œ์ด๋ฉฐ, ์ด๊ฒƒ ์—ญ์‹œ ์ •์ƒ์ž…๋‹ˆ๋‹ค.

์„ธ๋ฒˆ์งธ ์ฝ”๋“œ๋Š” null์„ ์ง์ ‘ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด Null Point Exception์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด์—์š”.

Null์ผ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด ๋„ค๋ฒˆ์งธ ์ฝ”๋“œ์ฒ˜๋Ÿผ ofNullable์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ต๋‹ˆ๋‹ค!

 

๐Ÿ‘‰ Null ๋Œ€์‹  ๋นˆ Optional<T> ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ

Optional<String> optVal = null;		// Null๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š๋‹ค.
Optional<String> optVal = Optional.<String>empty();		// ๋นˆ ๊ฐ์ฒด๋กœ ์ดˆ๊ธฐํ™” ๋ฐ”๋žŒ์งํ•˜๋‹ค.

// ' <String> '์€ ์ƒ๋žต ๊ฐ€๋Šฅ

 

 

   ๐Ÿ“ Optional<T> ๊ฐ์ฒด์˜ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ


๐Ÿ‘‰ 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)		// Null์ด๋ฉด ์˜ˆ์™ธ ๋ฐœ์ƒ

orElseThorw() ์˜ˆ์™ธ ์ข…๋ฅ˜๋ฅผ ์ง€์ • ๊ฐ€๋Šฅํ•˜๋‹ต๋‹ˆ๋‹ค!

T orElseGet ( Supplier < ? extends T > other )


T orElseThrow ( Supplier < ? extends x > exceptionSupplier )

์œ„์˜ ์ฝ”๋“œ๋Š” orElseGet๊ณผ orElseThrow๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

Supplier๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด ๋ฐ˜ํ™˜๋งŒ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

๊ฒฐ๊ตญ str3 ๋ถ€๋ถ„์€ () -> ( new String() ); ์ด๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”. 

 

๐Ÿ‘‰ isPresent() - Optional ๊ฐ์ฒด ๊ฐ’์ด Null์ด๋ฉด false, ์•„๋‹ˆ๋ฉด True๋ฅผ ๋ฐ˜ํ™˜

if ( Optional.ofNullable(str).isPresent() ) {	// if ( str != null )
	System.out.println(str);
}
// ifPresnt( Consumer ) - Null์ด ์•„๋‹๋•Œ๋งŒ ์ž‘์—…์„ ์ˆ˜ํ–‰, Null์ด๋ฉด ์•„๋ฌด ์ž‘์—… ์—†์Œ
Optional.ofNullable(str).ifPresent(System.out::println);

ifPresnet๋Š” Null์ด ์•„๋‹ ๋•Œ๋งŒ ์†Œ๊ด„ํ˜ธ ์•ˆ์— ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

๐Ÿ“ ์˜ˆ์ œ ์ฝ”๋“œ

class Optinal_ex {
	public static void main(String[] args)	{
    	int[] arr = {};
        System.out.println("arr.lenth = " + arr.length);		// ๊ฒฐ๊ณผ๋Š” 0
        
        int[] arr = new int[0];
        System.out.println("arr.lenth = " + arr.length);		// ๊ฒฐ๊ณผ๋Š” 0
        
//      Optional<String> opt = null;							// Error๋Š” ๋‚˜์ง€ ์•Š์ง€๋งŒ, ๊ถŒ๊ณ ํ•˜์ง€ ์•Š์Œ
  		Optional<String> opt = Optional.empty();				// ์ด๋ ‡๊ฒŒ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
        
        
        System.out.println(" opt = " + opt );					// ๊ฒฐ๊ณผ๋Š” Optional.empty
//      System.out.println(" opt = " + opt.get() );				// NoSuchElementException ๋ฐœ์ƒ ๋“ค์–ด์žˆ๋Š” ๊ฐ’์ด null์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒ
  		
        // ์œ„์™€ ๊ฐ™์ด ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ ์ ์ ˆ
        String str = "";
        
        // str = opt.get();										// ์˜ˆ์™ธ ๋ฐœ์ƒ
        
        
//        try {
//        	str = opt.get();
//        } catch (Exception e) {
//        	str = "";			//	์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ณต๋ฐฑ์œผ๋กœ ์ดˆ๊ธฐํ™”
//        }
        
//        System.out.println(" str = " + str );					// ๊ฒฐ๊ณผ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ฐํžˆ์ง€ ์•Š๋Š”๋‹ค.
        
        // ์œ„์™€ ๊ฐ™์ด try-catch๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
        str = opt.orElse("");									// Optional์— ์ €์žฅ๋œ ๊ฐ’์ด Null์ด๋ฉด ๊ณต๋ฐฑ ๋ฐ˜ํ™˜
        str = opt.orElseGet( () -> "EMPTY");					// ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด EMPTY๊ฐ€ ์ฐํž˜
        System.out.println(" str = " + str );
    }
}

 

 

 

   ๐Ÿ“ OptionalInt, OptionalLong, OptionalDouble

๐Ÿ‘‰ ๊ธฐ๋ณธํ˜• ๊ฐ’์„ ๊ฐ์‹ธ๋Š” ๋ž˜ํผ ํด๋ž˜์Šค

public final class OptionalInt {
	...
    private final boolean isPresent;		// ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด? True๊ฐ’ ๋ฐ˜ํ™˜
    private final int value;				//	int ํƒ€์ž…์˜ ๋ณ€์ˆ˜

 

์œ„์—์„œ ์—ด๊ฑฐํ•œ OptionalInt, OptionLong, OptionalDouble ๋“ฑ์€ ์‚ฌ์‹ค Optional<T>๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•œ ๊ฒƒ์ด์—์š”.

ํ•˜์ง€๋งŒ, ์ €๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์„ฑ๋Šฅ! ๋ฐ”๋กœ ํผํฌ๋จผ์Šค ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”!

 

 

๐Ÿ‘‰ OptionalInt์˜ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ - int getAsInt()

Optional Class ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” Method
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 ์ €์žฅ

์—ฌ๊ธฐ์„œ empty๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ €์žฅํ•˜์ง€ ์•Š์€ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด์—์š”. ์ฆ‰, 0๊ณผ๋Š” ์‚ฌ์‹ค ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅด๋‹ค๊ณ  ๋ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋งž๊ฒ ์ง€์š”?

๊ทธ๋Ÿผ ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์ด๊ฒƒ์„ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด isPresent()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

System.out.println( opt.isPresent() );				// True
System.out.println(	opt2.isPresent() );				// False
System.out.println(	opt.equals( opt2 );				// False

๋˜‘๊ฐ™์ด 0์ด๋ผ๋Š” ๊ฐ’์ด ์ €์žฅ๋˜๋”๋ผ๋„ ์œ„์˜ opt์—๋Š” 0์ด๋ผ๋Š” ์ •์ˆ˜๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๊ณ , isPresent()์—์„  True๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

ํ•˜์ง€๋งŒ, opt2์—๋Š” 0์ด๊ธด 0์ธ๋ฐ, ์ •์ˆ˜ 0์ด๋ผ๊ณ  ํ•˜๊ธฐ์—” ์• ๋งคํ•œ empty๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๊ณ , isPresent()์—์„  Flase๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด์—์š”. ๊ฒฐ๊ตญ opt2๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ €์žฅํ•˜์ง€ ์•Š์•˜๋‹ค๋ผ๊ณ  ๋ณด๋Š” ๊ฒƒ์ด ๋งž์•„์š”!

 

 

๐Ÿ“ ์˜ˆ์ œ ์ฝ”๋“œ

import java.util.*;

class optional_Ex1 {
	// abced๋ผ๋Š” ๊ฐ’์„ ๊ฐ–๋Š” Optional ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , abced๊ฐ€ ๋ฌธ์ž์—ด ์ด๊ธฐ ๋•Œ๋ฌธ์— <String>์œผ๋กœ ์ƒ์„ฑ
	Optional<String> optStr = Optional.of( "abcde" );
   	// Optional ๋˜ํ•œ map์ด๋ผ๋Š” Method๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด Optional์„ map์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ๊ฐ’์„ length๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    // length๋Š” ์ •์ˆ˜์ด๋ฏ€๋กœ, <Integer>๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
   	Optional<Integer> optInt = optStr.map(String::length);
    
    // ์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋žŒ๋‹ค์‹์œผ๋กœ ๋ฐ”๊พธ๋ฉด?
    Optional<Integer> optInt = optStr.map( s -> s.length() );
    
    
    System.out.println( " optStr = " + optstr.get() );			// ๊ฒฐ๊ณผ optStr = abcde
    System.out.println( " optInt = " + optstr.get() );			// ๊ฒฐ๊ณผ optInt = 5
    
    int result1 = Optional.of( "123" )
    				// fileter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด 133์˜ ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํฐ์ง€ ํ™•์ธํ•œ๋‹ค.
    				.filter( x -> x.length() > 0 )
                    // parseInt๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด 123์„ ์ •์ˆ˜ 123์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ ์ค€๋‹ค.
                    .map( Integer::parseInt ).get();
                    
    int result2 = Optional.of("")
    				.filter( x -> x.length() > 0 )
                    .map( Integer::parseInt).orElse(-1);
                    
    System.out.println( " result1 = " + result1 );				// ๊ฒฐ๊ณผ result1 = 123
    System.out.println( " result2 = " + result2 );				// ๊ฒฐ๊ณผ result2 = -1
    
    Optional.of( "456" ).map( Integer::parseInt)
    					.ifPresent( x -> System.out.printf( " result3 = %d%n", x ) );		// ๊ฒฐ๊ณผ result3 = 456
    
    OptionalInt optInt1 = OptionalInt.of(0);			// 0์„ ์ €์žฅ  isPresent = True
    OptionalInt optInt2 = OptionalInt.empty();			// ๋นˆ ๊ฐ์ฒด ์ƒ์„ฑ	ifPresent = False
    
    System.out.println( " optInt1.ispresent() );		// ๊ฒฐ๊ณผ true
    System.out.println( " optInt2.isPresent() );		// ๊ฒฐ๊ณผ false
    
    System.out.println( " optInt1.getAsInt() );			// ๊ฒฐ๊ณผ 0
    System.out.println( " optInt2.getAsInt() );			// ๊ฒฐ๊ณผ NoSuchElementException
    System.out.println( " optInt1 = " + optInt1 );		// ๊ฒฐ๊ณผ optInt1 = OptionalInt[0]
    System.out.println( " optInt2 = " + optInt2 );		// ๊ฒฐ๊ณผ optInt2 = OptionalInt.empty
    System.out.println( " optInt1.equals( optInt2) ? " + optInt1.equals( optInt2 ) );		// ๊ฒฐ๊ณผ optInt1.equals( optInt2 ) ? false

 

 

 


์ฃผ๋‹ˆํ•˜๋ž‘์˜ ๊ธ€์ด ๋งˆ์Œ์— ๋“œ์…จ๋‚˜์š”? ๊ตฌ๋…๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋Œ“๊ธ€์€ ์ฃผ๋‹ˆํ•˜๋ž‘์—๊ฒŒ ๋งŽ์€ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค!

728x90
๋ฐ˜์‘ํ˜•