๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/Java

[ch.14] Optional<T>์™€ OptionalInt

by OR15A 2023. 11. 20.

Optional<T>

  • ์ง€๋„ค๋ฆญ ํด๋ž˜์Šค. Tํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ์‹ธ๋Š” ๋ž˜ํผํด๋ž˜์Šค.
  • Optionalํƒ€์ž…์˜ ๊ฐ์ฒด์—๋Š” ๋ชจ๋“  ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ.

 

Optional ๊ฐ์ฒด์ƒ์„ฑ

 

Optional<T>ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ  ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ

  • Optional.<T>empty(): T ํƒ€์ž…์˜ ๋นˆ Optional ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” public static ๋ฉ”์„œ๋“œ.

 

Optional ๊ฐ์ฒด์— ์ €์žฅ๋œ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ

 

Optional ๊ฐ์ฒด์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ŠคํŠธ๋ฆผ ๋ฉ”์„œ๋“œ

  • filter( ), map( ), flatMap( )
  • Optional๊ฐ’์ด null์ด๋ฉด ์ด ๋ฉ”์„œ๋“œ๋“ค์€ ์•„๋ฌด์ผ๋„ ํ•˜์ง€ ์•Š์Œ.

 

boolean์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ

 

Stream์˜๋ฉ”์„œ๋“œ์ค‘ Optional<T>๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ

  • ๊ณตํ†ต์  : null์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ํฐ ๊ฒƒ๋“ค, ์ŠคํŠธ๋ฆผ์ด ๋น„์–ด์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.

 

OptionalInt, OptionalLong, OptionalDouble

  • IntStream๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธํ˜• ์ŠคํŠธ๋ฆผ์—๋Š” Optional๋„ ๊ธฐ๋ณธํ˜•์„ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•จ. (OptionalInt, OptionalDouble ๋“ฑ)
  • ๊ฐ์ฒด์— ์ €์žฅ๋œ ๊ฐ’์„ ๊บผ๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•  ๊ฒƒ.
<๊ฐ์ฒดํƒ€์ž…>  vs <๊ฐ’ ๋ฐ˜ํ™˜ ๋ฉ”์„œ๋“œ>

 

OptionalInt.of( 0 )  vs  OptionalInt.empty( )

 

Optional.ofNullable(null);  vs  Optional.empty( );