Optional

  • ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ํ•˜๋‚˜ ์ด์ƒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…

  • ์–ด๋–ค ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ๋Š”๋ฐ ์›์†Œ๋ฅผ ๊บผ๋‚ด์„œ ์ถœ๋ ฅ์„ ํ•˜๋Š” ๊ฒฝ์šฐ

    • ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š” ๊ฒƒ์€ ์ŠคํƒํŠธ๋ ˆ์ด์Šค๋ฅผ ๋‚จ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ์ด ๋น„์Œˆ.

    • null์„ ๋˜์ง€๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฅผ ์œ„ํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ๋œ๋‹ค

    • Optional ํƒ€์ž…์œผ๋กœ ๋ž˜ํ•‘ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ช…์‹œ์ ์œผ๋กœ ๋นˆ ๊ฐ’์ผ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๊ณ , ๋นˆ ๊ฐ’์ธ ๊ฒฝ์šฐ์—๋Š” ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•์ œํ•œ๋‹ค

  • ๋ฆฌํ„ด๊ฐ’์œผ๋กœ๋งŒ ์“ฐ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜, ๋งต์˜ key ํƒ€์ž…, ์ธ์Šคํ„ด์Šค์˜ ํ•„๋“œํƒ€์ž…์œผ๋กœ ์“ฐ์ง€ ๋ง์ž. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์“ธ ๊ฒฝ์šฐ ๋ฌธ๋ฒ•์ ์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, ๋ฐ”๋””์—์„œ null์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ์ฒดํฌํ•ด์•ผ๋˜๊ณ , ๋ฒˆ๊ฑฐ๋กœ์›Œ์ง

    • ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์“ฐ๋Š” ๊ฒฝ์šฐ ๋ฌธ๋ฒ•์ ์œผ๋กœ๋Š” ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, ๋ฐ”๋””์—์„œ isPresent๋กœ null ์ฒดํฌ๋ฅผ ํ•ด์•ผ๋˜๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ ์ž์ฒด๋„ null ์ฒดํฌ๋ฅผ ํ•ด์•ผ๋˜์„œ Optional์„ ์“ฐ๋Š” ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง

    • Map์˜ ํ‚ค๋Š” null์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ทœ์น™์„ ๊นจ๋Š” ๊ฒƒ์ž„

  • Primitive ํƒ€์ž…์šฉ Optional ์ด ๊ฐ๊ฐ ๋”ฐ๋กœ ์žˆ๋‹ค. OptionalInt, OptionalLongโ€ฆ

  • collection, Map, Stream, Array, Optional์€ Optional๋กœ ๊ฐ์‹ธ์ง€ ๋ง์ž

  • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” item 55. ์ ์ ˆํ•œ ๊ฒฝ์šฐ์— Optional์„ ๋ฆฌํ„ดํ•˜๋ผ

  • ์ž์ฃผ ์“ฐ๋Š” API

    • Optional ๋งŒ๋“ค๊ธฐ - of(), ofNullable(), empty()

    • Optional ์— ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ - isPresent(), isEmpty() - java11

    • Optional์— ์žˆ๋Š” ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ - get()

    • ๋น„์–ด์žˆ๋Š” Optional์—์„œ ๊ฐ’์„ ๊บผ๋‚ด๋Š” ๊ฒฝ์šฐ - ifPresent(consumer)

      • โ€˜springโ€™์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜์—…์ด ์žˆ์œผ๋ฉด id๋ฅผ ์ถœ๋ ฅํ•ด๋ผ

    • Opiontal์— ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ฐ€์ ธ์˜ค๊ณ  ์—†์œผ๋ฉด - getElseGet(Supplier)

      • โ€˜JPAโ€™๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜์—…์ด ์žˆ์œผ๋ฉด ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ฆฌํ„ดํ•ด๋ผ

    • Optional์— ๊ฐ’์ด ์žˆ์œผ๋ฉด๊ฐ€์ ธ์˜ค๊ณ , ์—†์œผ๋ฉด ์—๋Ÿฌ๋ฅผ ๋˜์ง„๋‹ค - orElseThrow()

    • Optiontal์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ - Optional filter(predicate)

    • Optiontal์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’ ๋ณ€ํ™˜ํ•˜๊ธฐ - Optional map(Func), Optiontal flatMap(Func)

      โ†” stream์˜ flatmap ์€ input์€ ํ•˜๋‚˜์ธ๋ฐ output์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ flatmap ์œผ๋กœ 1๋Œ€1๋งค์นญ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•จ

Last updated