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