Java8์์ ๋์
๋ ํด๋์ค๋ก NullPointerException์ ๋ฐฉ์งํ ์ ์๋๋ก ๋์์ฃผ๋ Wrapper ํด๋์ค์
๋๋ค.
๋ชจ๋ ํ์
์ ์ฐธ์กฐ ๋ณ์๋ฅผ ์ ์ฅํ ์ ์๊ณ , ๊ฐ์ด null์ด๋๋ผ๋ ๋ฐ๋ก NPE๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
of()
๋ฉ์๋๋ ofNullable()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Optional ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
null์ด ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด ofNullable()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ๋น์ด ์๋ Optional ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ NullPointerException์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
Optional<String> opt = Optional.ofNullable("์๋ฐ Optional ๊ฐ์ฒด"); // ๊ฐ์ฒด ์์ฑ
if(opt.isPresent()) { // null ์ฒดํฌ
System.out.println(opt.get()); // ๊ฐ์ฒด ์ ๊ทผ
}
get()
์ผ๋ก ๊ฐ์ฒด์ ์ ๊ทผํ ๋ ์ ์ฅ๋ ๊ฐ์ด null์ด๋ฉด NoSuchElementException ์์ธ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ isPresent()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ null ์ฒดํฌ๋ฅผ ๋จผ์ ํด์ผ ํฉ๋๋ค.
๋ฉ์๋ | ์ค๋ช |
---|---|
static Optional empty() | ์๋ฌด๋ฐ ๊ฐ๋ ๊ฐ์ง์ง ์๋ ๋น์ด์๋ Optional ๊ฐ์ฒด๋ฅผ ๋ฐํํจ. |
T get() | Optional ๊ฐ์ฒด์ ์ ์ฅ๋ ๊ฐ์ ๋ฐํํจ. |
boolean isPresent() | ์ ์ฅ๋ ๊ฐ์ด ์กด์ฌํ๋ฉด true๋ฅผ ๋ฐํํ๊ณ , ๊ฐ์ด ์กด์ฌํ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํจ. |
static Optional of(T value) | null์ด ์๋ ๋ช ์๋ ๊ฐ์ ๊ฐ์ง๋ Optional ๊ฐ์ฒด๋ฅผ ๋ฐํํจ. |
static Optional ofNullable(T value) | ๋ช ์๋ ๊ฐ์ด null์ด ์๋๋ฉด ๋ช ์๋ ๊ฐ์ ๊ฐ์ง๋ Optional ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉฐ, ๋ช ์๋ ๊ฐ์ด null์ด๋ฉด ๋น์ด์๋ Optional ๊ฐ์ฒด๋ฅผ ๋ฐํํจ. |
T orElse(T other) | ์ ์ฅ๋ ๊ฐ์ด ์กด์ฌํ๋ฉด ๊ทธ ๊ฐ์ ๋ฐํํ๊ณ , ๊ฐ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์ธ์๋ก ์ ๋ฌ๋ ๊ฐ์ ๋ฐํํจ. |
T orElseGet(Supplier<? extends T> other) | ์ ์ฅ๋ ๊ฐ์ด ์กด์ฌํ๋ฉด ๊ทธ ๊ฐ์ ๋ฐํํ๊ณ , ๊ฐ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์ธ์๋ก ์ ๋ฌ๋ ๋๋ค ํํ์์ ๊ฒฐ๊ด๊ฐ์ ๋ฐํํจ. |
T orElseThrow(Supplier<? extends X> exceptionSupplier) | ์ ์ฅ๋ ๊ฐ์ด ์กด์ฌํ๋ฉด ๊ทธ ๊ฐ์ ๋ฐํํ๊ณ , ๊ฐ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์ธ์๋ก ์ ๋ฌ๋ ์์ธ๋ฅผ ๋ฐ์์ํด. |