ch21 : Generic
๋ชฉ์ฐจ
Generic ์ฌ์ฉํ๋ ์ด์ ?
๋ง์ฝ DTO์ ๋ฉค๋ฒํ๋๋ฅผ
Object
๋ก ํ ๊ฒฝ์ฐ,๋ฆฌํด๊ฐ์
Object
๋ก ๋ฐ์์ ์ค์ ์ฌ์ฉ์์๋ ํ๋ณํ์ ํด์ฃผ์ด์ผํ๋ค.๋ค๋ง, ์ด๋ ์ค์ ์ด๋ค ์๋ฃํ์ธ์ง ํผ๋๋ ์ ์๋ค. (
instanceof
๋ฅผ ํตํด ์ง์ if-else๋ฌธ์ผ๋ก ํ์ ์ ์ ๊ฒํด์ค ์๋ ์์ง๋ง ๋ฒ๊ฑฐ๋กญ๋ค.)โ ์ด๋ ์ด ์๋ฃํ์ ์ปดํ์ผ ์์ ์ ์ ๊ฒํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ์ด
Generic
์ด๋ค!
์์)
์ ๋ค๋ฆญ ํ์ ์ด๋ฆ ์ ํ๊ธฐ
E : ์์ (์๋ฐ Collections)
K : ํค
N : ์ซ์
T : ํ์
V : ๊ฐ
S, U, V : ๊ฐ๊ฐ 2,3,4 ๋ฒ์งธ ์ ์ธ๋ ํ์
Wildcard
<?>
๋งค๊ฐ๋ณ์๋ก ์ฌ๋ฌ ํ์ ์ ๋ฐ๊ณ ์ถ์ ๊ฒฝ์ฐ <?>์ ์ฌ์ฉํ๋ค.
์ ๋ค๋ฆญ ํด๋์ค์ ํ์ ๋ง ๋ฐ๊พผ๋ค๊ณ ์ค๋ฒ๋ก๋ฉํ ์๋ ์๊ธฐ์ ์์ผ๋์นด๋๋ฅผ ์ฌ์ฉํจ.
๊ทธ๋ฆฌ๊ณ ํด๋น ๋ฉ์๋ ๋ด์์๋
instanceof
๋ฅผ ํตํด์ ํ์ ์ ํ์ธํ๋ฉด ๋๋ค.์์) ๋ฉ์๋์์ ๋งค๊ฐ๋ณ์๋ก ํ๊ฐ์ง ํ์ ๋ง ๋ฐ์ ์ ์๋๋ก ๋์ด์๋ค.
๋จ, <?> ์์ผ๋์นด๋๋ ๋งค๊ฐ๋ณ์๋ก๋ง ์ฌ์ฉํ ๊ฒ! ๊ฐ์ฒด ์ ์ธ ์์๋ ์ฌ์ฉํ ์๋ ์์ง๋ง, ํน์ ํ์ ์ผ๋ก ๊ฐ์ ํ ๋นํ ์๋ ์๋ค.
Bounded Wildcard
<? extends ๋ถ๋ชจํด๋์ค>
์์ผ๋์นด๋์ ํ์ ๋ฒ์๋ฅผ ์ ํ ์ ์๋ค.
๋งค๊ฐ๋ณ์/๋ฆฌํด๊ฐ์์
<?>
๋์<? extends ๋ถ๋ชจํด๋์ค>
์ ์ฌ์ฉํ๋ฉด, ์์๋ฐ์ ๋ถ๋ชจํด๋์ค๋ง ๋ฐ์ ์ ์๋ค.
๋จ, ์ด ๊ฒฝ์ฐ์๋ ๋งค๊ฐ๋ณ์๋ก ์จ ๋ณ์์ ๊ฐ์ ์ถ๊ฐํ ์ ์๋ค.
์์ผ๋์นด๋๋ก ์ ์ธ๋ ๋ณ์๋ ํน์ ํ์ ์ผ๋ก ๊ฐ์ด ํ ๋น๋ ์ ์๊ธฐ ๋๋ฌธ!
๋งค๊ฐ๋ณ์๋ก ์จ ๋ณ์์ ๊ฐ์ ์ถ๊ฐํ๊ณ ์ถ์ผ๋ฉด,
๋ฉ์๋ ์ ์ธ ์ ๋ฆฌํด ํ์ ์์ ์ ๋๋ฆญํ ํ์ ์ ์ ์ธํด ์ฃผ๊ณ , ๊ทธ ํ์ ์ ๋งค๊ฐ ๋ณ์์์ ์ฌ์ฉํ๋ฉด ๋๋ค.
Last updated