๐ Collections.emptyList() vs. List.of() ๋น๊ต
| ํน์ง | Collections.emptyList() | List.of() |
|---|---|---|
| Java ๋ฒ์ | Java 1.2๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅ | Java 9๋ถํฐ ๋์ (JEP 269) |
| ๋ชฉ์ | ๋จ ํ๋์ ๊ณต์ ๋ ์ ์ ๋น ๋ฆฌ์คํธ ์ธ์คํด์ค๋ฅผ ๋ฐํ | ๋น์ด ์๊ฑฐ๋ ์์๊ฐ ์ฑ์์ง ๋ถ๋ณ ๋ฆฌ์คํธ๋ฅผ ์์ฑ |
| ๋ถ๋ณ์ฑ | ๋ถ๋ณ(Immutable). (์ถ๊ฐ/์ ๊ฑฐ ๋ถ๊ฐ๋ฅ) | ๋ถ๋ณ(Immutable). (์ถ๊ฐ/์ ๊ฑฐ ๋ถ๊ฐ๋ฅ) |
| null ํ์ฉ | null ์์๋ฅผ ์ถ๊ฐํ ์ ์์ (์ด์ฐจํผ ๋น์ด ์์) | ์์๋ก null์ ๋ฃ์ผ๋ ค ํ๋ฉด NullPointerException ๋ฐ์ |
| ์ฑ๋ฅ | ๋งค์ฐ ๋น ๋ฆ. ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์์. | ๋น ๋ฆ. ๋ฆฌ์คํธ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ์ต์ ํ๋์ด ์์. |
๐ก ์ฃผ์ ์ฐจ์ด์ ์์ธ
1. ๊ฐ์ฒด ์์ฑ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ (๊ฐ์ฅ ํฐ ์ฐจ์ด)
Collections.emptyList()
์ด ๋ฉ์๋๋ EMPTY_LIST๋ผ๋ ์ด๋ฆ์ ์ ์ (Static)์ด๊ณ ๊ณ ์ ๋(final) ๋จ์ผ ์ธ์คํด์ค๋ฅผ ๋ฐํํฉ๋๋ค.
๋ฐ๋ผ์ ์ด ๋ฉ์๋๋ฅผ ์๋ฐฑ ๋ฒ ํธ์ถํด๋ ์๋ก์ด ๊ฐ์ฒด๋ ๋จ ํ ๋ฒ๋ ์์ฑ๋์ง ์์ผ๋ฉฐ, ํญ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋์ผํ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํฉ๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ์ธก๋ฉด์์ ์ต๊ณ ์
๋๋ค.
List.of()
์ด ๋ฉ์๋๋ ํธ์ถ๋ ๋๋ง๋ค ์๋ก์ด ImmutableCollections$ListN ๋๋ ์ด์ ์ ์ฌํ ๋ด๋ถ ํด๋์ค์ ์๋ก์ด ๋ถ๋ณ ๋ฆฌ์คํธ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
๋น์ด ์๋ ๊ฒฝ์ฐ(List.of())์๋ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋น ๋ฆฌ์คํธ๋ฅผ ์ํ ์๋ก์ด ์์ ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค.
Collections.emptyList()
์ฃผ๋ก ๋ฐํํ ์์๊ฐ ์์ ๋ (์: ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ 0๊ฐ์ผ ๋) null ๋์ ๋ฐํํ์ฌ NullPointerException์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
List.of()
์ปฌ๋ ์
๋ฆฌํฐ๋ด(Collection Literal)์ ๋์ฒดํ๊ธฐ ์ํด Java 9์์ ๋์
๋์์ต๋๋ค. ๋น์ด ์๋ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ ์ธ์๋, List.of("A", "B")์ฒ๋ผ ์์๋ฅผ ํฌํจํ๋ ๋ถ๋ณ ๋ฆฌ์คํธ๋ฅผ ์ฝ๊ฒ ์์ฑํ๋ ๊ฒ์ด ์ฃผ ๋ชฉ์ ์
๋๋ค.