- null์ ๋ฐํ
- ์์ธ๋ฅผ ๋ฐ์
- Item 54์์ ์ธ๊ธํ๋ฏ ํด๋ผ์ด์ธํธ์์ null์ ๋ํ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ๋นผ๋จน๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋
NullPointerException
๋ฌธ์ ๋ ๊ฐ๋ ์ฑ ์ ํ ์ด์๊ฐ ์กด์ฌ
- ์ค์ ์์ธ ์ํฉ์ด ์๋์๋ ์์ธ๋ฅผ ๋์ง๊ฒ ๋จ
- ์์ธ๋ ์ง์ง ์์ธ์ ์ธ ์ํฉ์์๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์
- ์์ธ๋ฅผ ์์ฑํ๋ ๋น์ฉ๋ ๋ฌด์ํ ์ ์์
- ํด๋น ์์ ์ Stack Trace(์คํ ์ถ์ ) ์ ์ฒด๋ฅผ ์บก์ฒํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์ธ ์์ฑ ๋น์ฉ์ ๋ง๋ง์น ์์
- Tํ์ ๊ฐ์ฒด๋ฅผ ์์ ํ๊ฑฐ๋ ์์ ํ์ง ์์ ์ ์๋ ๊ฐ์ฒด
- ๋ณดํต T๋ฅผ ๋ฐํํด์ผ ํ์ง๋ง ํน์ ์กฐ๊ฑด์์๋ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์๋ ๊ฒฝ์ฐ Optional์ ๋ฐํํ๋ ๊ฒ์ด ์ข์
Optional.empty()
๋ฅผ ํตํด ๋น Optional ๊ฐ์ฒด๋ฅผ ๋ฐํํ ์ ์์
- ๋ฐํ ํ์
์ Optional๋ก ๋ช
์ํจ์ผ๋ก์จ, ํด๋ผ์ด์ธํธ์๊ฒ
๋ฐํ๋๋ ๊ฐ์ด ์์ ์๋ ์์์ ๋ช ์
ํ ์ ์์- ํด๋ผ์ด์ธํธ๋ ๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ๋์ ๊ฐ์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ฒ ๋จ
- Optional์ ๋ฐํํ๋ ๋ฉ์๋์์๋ ์ ๋ null์ ๋ฐํํ๋ฉด ์ ๋จ
- Optional ์์ฒด๋ฅผ ์ฐธ์กฐํ ๋ NullPointerException์ด ๋ฐ์ํ๊ฒ ๋๋ฏ๋ก, ์ด๋
Optional์ ์ทจ์ง์ ๋ฐํ๋
ํ์
- Optional ์์ฒด๋ฅผ ์ฐธ์กฐํ ๋ NullPointerException์ด ๋ฐ์ํ๊ฒ ๋๋ฏ๋ก, ์ด๋
- ๊ฒฐ๊ณผ๊ฐ์ด ์์ ์ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ์ด์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ ๋
- ์ปฌ๋ ์
, ์คํธ๋ฆผ, ๋ฐฐ์ด, ๊ฐ์ ์ต์
๋ ํ์
์ ๊ฒฐ๊ณผ๊ฐ์ด ์์ ์๋ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ ๋
- ์ปฌ๋ ์ /์คํธ๋ฆผ/๋ฐฐ์ด์ ์ต์ ๋์ ์ฌ์ฉํ๋ ๋์ ๋น ์ปฌ๋ ์ /์คํธ๋ฆผ/๋ฐฐ์ด์ ๋ฐํ
- ์ต์ ๋์ ๊ทธ ์์ฒด๋ก ์ต์ ๋์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฐํ
- ๋ฐ์ฑ๋ ์ฃผ์ primitive type(int, long, double)์ ๋ฐํํ ๋
- ๋ฐ์ฑ+์ต์ ๋์ ๊ฐ์ ๋ ๋ฒ ๊ฐ์ธ๋ ๊ฒ์ด ๋๋ฏ๋ก primitive type์ ๊ทธ๋ฅ ์ฌ์ฉํ ๋๋ณด๋ค ํจ์ฌ ๋ฌด๊ฑฐ์์ง
- ๋์ OptionalInt, OptionalLong, OptionalDouble์ ์ฌ์ฉํด ํ ๋ฒ๋ง ๊ฐ์ ์ ์์
- Map์ value๋ก ์ฌ์ฉ
- Map์ value์ ์กด์ฌ ์ฌ๋ถ๋ key์ ์กด์ฌ ์ฌ๋ถ๋ก ํ๋จํ ์ ์๋๋ก ๊ตฌํํด์ผ ํจ
- map.contains(key)๋ฅผ ํตํด ์กด์ฌ ์ฌ๋ถ ํ๋ณ
- ๋ง์ฝ value๋ก Optional์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ ๋ฐฉ์์ด 2๊ฐ์ง๋ก ๋๋๊ฒ ๋๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ๋ ๋ณต์กํด์ง
- Map์ value์ ์กด์ฌ ์ฌ๋ถ๋ key์ ์กด์ฌ ์ฌ๋ถ๋ก ํ๋จํ ์ ์๋๋ก ๊ตฌํํด์ผ ํจ
- ์ต์ ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ทธ๋ ์ง ์๋ ๊ฒ๋ณด๋ค ๋ฌด๊ฒ๋ค๋ ์ ์ ์ ์ํ์ฌ, ์ ์ฌ์ ์์ ์ ํ์ฉํด์ผ ํจ