Optional
Optional์ด๋?
Optional<T>๋ null์ด ์ฌ ์ ์๋ ๊ฐ์ ๊ฐ์ธ๋ Wrapper ํด๋์ค.
Java 8 ์์ ๋์ ๋์์ผ๋ฉฐ, ๊ฐ์ข ๋ฉ์๋๋ฅผ ํตํด Null์ ๋์ํ๋ค.
Optional์ null ๋๋ ์ค์ ๊ฐ์ wrapper๋ก ๊ฐ์ธ์ NPE(NullPointerException)๋ก๋ถํฐ ์์ ๋ก์์ง๊ธฐ ์ํด ๋์จ Wrapper ํด๋์ค์ด๋ค.
Optional์ ๋ฐํํ๋ ๋ฉ์๋๋ ์ ๋ null์ ๊ฐ๋ value๋ฅผ ๋ฐํํด์๋ ์๋๋ค. ๋ํ Optional์ ๊ฐ์ Wrappingํ๊ณ ํ๊ณ , null์ผ ๊ฒฝ์ฐ์๋ ์์ธ ๋์ฒ ๊ณผ์ ์์์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
์ฆ, Optional์ ๋ฉ์๋์ ๊ฒฐ๊ณผ๊ฐ null์ด ๋ฐ๋์ ์๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค.
Optional ๋จ์
์ฝ๋๋ ์ค์ผ ์ ์์ง๋ง ๊ฐ๋ ์ฑ์ด ์ ํ๋๋ค.
๋จ์ null ์ฒดํฌ ์ฉ๋๋ก ์ฌ์ฉํ๊ธฐ์๋ ์ฑ๋ฅ์ ๋ํ ํธ๋ ์ด๋ ์คํ๊ฐ ๊ฝค ํฌ๋ค.
Optional ์ด ์ฌ์ฉ๋ ์ฝ 95% ์ด์์ ์ฝ๋์์์ ์ฌ์ฉ์ ๋ฌด์๋ฏธํ๊ฑฐ๋ ์์ค์ด ๋ ํฌ๋ค.
์ฌ์ ํ Optional ๊ด๋ จ method๋ ๋ฐ์ ์ค์ด๋ฉฐ, ์ ๋๋์ง ์์๋ค.
Optional ๊ฐ์ฒด ์์ฑ
Optional.of (java8)
value๊ฐ null์ธ ๊ฒฝ์ฐ NPE ์์ธ๋ฅผ ๋์ง๋ค
Optional.ofNullable (java8)
value๊ฐ null์ธ ๊ฒฝ์ฐ ๋น์ด์๋ Optional์ ๋ฐํ
Optional.empty (java8)
๋น์ด์๋ ์ต์ ๋ ๊ฐ์ฒด ์์ฑ
Optional ์ค๊ฐ
filter (java8)
predicate ๊ฐ์ด ์ฐธ์ธ ๊ฒฝ์ฐ ํํฐ๋ฅผ ํต๊ณผ
map (java8)
mapper ํจ์๋ฅผ ํตํด ๋ณํ
flatMap (java8)
mapper ํจ์๋ฅผ ํตํด ๋ณํ. map() ๋ฉ์๋์ ๋ค๋ฅธ์ ์ ๋ฐํ ๊ฐ์ด Optional์ด๋ค.
or (java9)
๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํ ์ ์ ํจ์๋ฅผ ์ ์ ์ฐ์ฐ ์ค ๋น์ด์๋ ์ต์ ๋์ด ๋๋ค๋ฉด, ๋ค์ or() ๋ฉ์๋ ์งํ
stream (java9)
stream ๊ฐ์ฒด๋ก ์ ํ์ด ๊ฐ๋ฅ.
Optional ์ข
๋จ
ifPresent (java8)
์ฐ์ฐ์ ๋๋ธ ํ ๊ฐ์ด ๋น์ด์์ง ์์ ๊ฒฝ์ฐ ์คํ
๋ง์ฝ ๋น์ด์๋ ์ต์ ๋ ๊ฐ์ฒด๋ฅผ ๋ฐ๊ฒ ๋๋ ๊ฒฝ์ฐ ์คํ๋์ง ์๋๋ค.
isPresent (java8)
์ต์ข ์ ์ผ๋ก ์ฐ์ฐ์ ๋๋ธ ๋ค ๊ฐ์ฒด ์กด์ฌ ์ฌ๋ถ ํ๋ณ (true/false)
get (java8)
์ฐ์ฐ์ด ๋๋ ํ ๊ฐ์ฒด๋ฅผ ๊บผ๋ธ๋ค.
๋น์ด์๋ ๊ฒฝ์ฐ ์์ธ ๋ฐ์.
orElse (java8)
์ฐ์ฐ์ด ๋๋ ๋ค ํธ์ถ
์ต์ ๋ ๊ฐ์ฒด์ ๊ฐ๊ณผ ์๊ด์์ด ํญ์ ํธ์ถ
๊ฐ์ด ๋ฏธ๋ฆฌ ์กด์ฌํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํด์ผ ํ๋ค.
๋ฐ๋์ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.(ex.unique key์ ๋ํ ์ค๋ฅ)
orElseGet (java8)
์ฐ์ฐ์ด ๋๋ ๋ค์๋ ์ต์ ๋ ๊ฐ์ฒด๊ฐ ๋น์ด์๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ๊ณตํ Supplier(๋น์ง๋์ค ๋ก์ง)๋ฅผ ์ง์
์ต์ ๋ ๊ฐ์ฒด๊ฐ null์ธ ๊ฒฝ์ฐ์๋ง ํธ์ถ
๊ฐ์ด ๋ฏธ๋ฆฌ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ.
orElseThrow (java8)
์ฐ์ฐ์ด ๋๋ ๋ค์๋ ์ต์ ๋ ๊ฐ์ฒด๊ฐ ๋น์ด์๋ค๋ฉด, ์์ธ ๋ฐ์.
ifpresentOrElse (java9)
๋๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ ์ ํจํ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ ๊ฒฝ์ฐ, ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์ ์คํ.
๊ฐ์ฒด๊ฐ ์ ํจํ์ง ์์ ๊ฒฝ์ฐ, ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์ ์คํ.
Last updated