Item 55. Optional
์ต์ ๋ ๋ฐํ์ ์ ์คํ ํ๋ผ
์๋ฐ์์๋ ๋ฉ์๋ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํ ์ ์์ ๋ ์๋ ์ธ ๊ฐ์ง ์ ํ์ง๊ฐ ์กด์ฌํ๋ค.
์์ธ ๋์ง๊ธฐ
null ๋ฐํ
Optional ๋ฐํ
์ด ์ค null์ ๋ฐํํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ์ฐํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ฐ๋ฉฐ, null ๋ฐํ ๋ฉ์๋๋ณด๋ค ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ด ์ ๋ค. ๋ง์ฝ Optional ๋ฐํ์ ์ฌ์ฉํ๋ค๊ณ ํ์ ๋ ์ ๋ null์ ๋ฐํํ์ง ๋ง์์ผ ํ๋ค.(Optional ์ ์ฑ ์๋ฐ) ๋ฐํ๊ฐ์ด ์์ ์ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ์๊ฒ ์ด๋ฅผ ๋ช ํํ๊ฒ ์๋ ค์ค์ผ ํ ๋ Optional์ ๋ฐํํ๋ ๊ฒ์ด ์ข๋ค.
class Example {
public static <E extends Comparable<E>> Optional<E> max(Collection<E> c) {
if (c.isEmpty()) {
return Optional.empty();
}
E result = null;
for (E e : c) {
if (result == null || e.compareTo(result) > 0) {
result = Objects.requireNonNull(e);
}
}
return Optional.of(result);
}
}
Optional ๋ฐํ์ ๋จ์
๋ง์ ์ด์ ์ ์ฃผ๋ Optional์ด์ง๋ง ์ปฌ๋ ์ , ๋งต, ์คํธ๋ฆผ, ๋ฐฐ์ด, ์ต์ ๋ ๊ฐ์ ์ปจํ ์ด๋ ํ์ ์๋ Optional์ ๋ฐํํ๋ ๊ฒ์ด ์ ํฉํ์ง ์๋ค.
์ปฌ๋ ์ / ๋ฐฐ์ด: ์ปฌ๋ ์ ๊ณผ ๋ฐฐ์ด์ ์ด๋ฏธ ๋น ์ปฌ๋ ์ ๊ณผ ๋ฐฐ์ด์ ๋ฐํํ ์ ์๊ธฐ ๋๋ฌธ์ Optional์ ๋ฐํํ ํ์๊ฐ ์๋ค.
๋งต: ํค๊ฐ ์๋ค๋ ์ฌ์ค์ด ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ํํ๋๊ธฐ ๋๋ฌธ์ ํผ๋์ ์ค ์ ์๋ค.
๊ทธ ์ธ: ์ฑ๋ฅ์ ๋ฏผ๊ฐํ ์ํฉ์์๋ Optional์ ๋ฐํํ๋ ๊ฒ์ด ์ ํฉํ์ง ์๋ค.
Last updated
Was this helpful?