Skip to content

Latest commit

ย 

History

History
29 lines (23 loc) ยท 3.29 KB

README.md

File metadata and controls

29 lines (23 loc) ยท 3.29 KB

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) ์ €์žฅ๋œ ๊ฐ’์ด ์กด์žฌํ•˜๋ฉด ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด.