Item 26. Raw Type
Raw Type์ ์ฌ์ฉํ์ง ๋ง๋ผ
์ ๋ค๋ฆญ ํ์
์ ์ ์ํ๊ฒ ๋๋ฉด ๋งค๊ฐ๋ณ์ ํ์
์ด ์ ์๋์ง ์์ Raw Type์ด๋ผ๋ ๊ฒ์ด ์๊ธฐ๊ฒ ๋๋ค.(List<E>
-> List
)
์ด๋ฌํ Raw Type์ ์๋์ ๊ฐ์ด ๊ทธ๋ฅ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ปดํ์ผ๋ฌ๋ ๊ฒฝ๊ณ ๋ฅผ ๋์ฐ๊ฒ ๋๋ค.(๊ทธ๋งํผ ์ํํ ์ํฐ ํจํด)
ํ์ง๋ง ์ญ์ ํ์ ๋ณํ์ ์๋ํ์ฌ ํ ๋นํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ์ ์ปดํ์ผ์ ์ฑ๊ณตํ๊ณ , ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ๋ ์ ๋ค๋ฆญ ํ์ ์ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋ฌ์๊ฒ ํ์ ์ ๊ฐ์ ํ๋๋ก ํ๋ฉด ๋๋ค.
์ด์ฒ๋ผ Raw Type์ ์ ๋ค๋ฆญ ํ์ ์ ์ฌ์ฉํ์ง ์๊ณ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์์ฑํ ์ ์๋๋ฐ, ์ ๋ ์จ์๋ ์ ๋๋ ํ์ ์ด๋ค. ํ์ง๋ง ์ปดํ์ผ๋ฌ ์์์ Raw Type์ ํ์ฉํ๋ ์ด์ ๋ ์ ๋ค๋ฆญ ํ์ ์ด ๋์ ๋๊ธฐ ์ ์ ์ฌ์ฉํ๋ ์ฝ๋์์ ํธํ์ฑ์ ์ํด ๋์ ๋ ๊ฒ์ด๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
List
vs List<Object>
List
vs List<Object>
Object๋ ๋ชจ๋ ํด๋์ค์ ์ต์์ ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ List
๊ฐ์ Raw Type๊ณผ ๋์ผํ๊ฒ ๋์ํ๋ค๊ณ ์๊ฐํ ์ ์์ง๋ง, ์ค์ ๋ก๋ ์ฐจ์ด๊ฐ ์๋ค.
List
: ํ์ ์ ์์ ํ ์ฒดํฌํ์ง ์์List<Object>
: ๋ชจ๋ ํ์ ์ ํ์ฉํ๋ค๋ ์์ฌ๋ฅผ ๋ช ํํ ์ ์, ํ์ ์ ์ฒดํฌ
์๋ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด List
๋ List<String>
์ ๋๊ฒจ ๋ฐ์ ์ ์์ง๋ง, List<Object>
๋ List<String>
์ ๋๊ฒจ ๋ฐ์ ์ ์๋ค.
์ด๋ ์ ๋ค๋ฆญ ํ์ ํ์
๊ท์น์ ์ํด List<String>
์ List<Object>
์ ํ์ ํ์
์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
Wildcard Type(์์ผ๋์นด๋ ํ์
)
Raw Type์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ์
์ ํ์ฉํ ์ ์์ง๋ง, ์ด๋ ์ํํ ๋ฐฉ๋ฒ์ด๋ค.
List<Object>
๊ฐ์ด ์ฌ์ฉํ๋ ๊ฒ์ ์ ๋ค๋ฆญ ํ์ ํ์
๊ท์น์ ์ํด List<String>
์ ๋๊ฒจ ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ์
์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ?
๋ฅผ ์ฌ์ฉํ ์์ผ๋์นด๋ ํ์
์ ์ฌ์ฉํ๋ฉด ๋๋ค.
Raw Type์ ํ์ ์ฒดํฌ๋ฅผ ์ ํ ํ๊ณ ์์ง ์์, ์ ์ ํ์ง ์์ ํ์ ์ ๋๊ฒจ ๋ฐ์๋ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ํ์ง๋ง ์์ผ๋์นด๋ ํ์ ์ ํ์ ์ฒดํฌ๋ฅผ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐํ์ ์๋ฌ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
Raw Type์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
Raw Type์ ์ง์ ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์์ด์๋ ์๋์ง๋ง ์๋์ ๊ฐ์ ๊ฒฝ์ฐ์๋ Raw Type์ ์ฌ์ฉํด์ผํ๋ค.
class ๋ฆฌํฐ๋ด:
List.class
,String[].class
,int.class
๋ ํ์ฉ๋์ง๋งList<String>.class
๋ ํ์ฉ๋์ง ์์instanceof ์ฐ์ฐ์:
instanceof List<String>
์ ํ์ฉ๋์ง ์์๋ฐํ์์๋ ์ ๋ค๋ฆญ ํ์ ์ ๋ณด๊ฐ ์ง์์ง๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ ์ ์์
Last updated