Item 52. Overloading
๋ค์ค์ ์๋ ์ ์คํ ์ฌ์ฉํ๋ผ
๋ฉ์๋ ๋ค์ค ์ ์(overloading)๋ ์ด๋ฆ์ ๊ฐ์ง๋ง ๋งค๊ฐ๋ณ์๊ฐ ๋ค๋ฅธ ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ๋งํ๋ค. ๋ค์ค์ ์๋ ํ๋ก๊ทธ๋๋จธ์๊ฒ ํธ์๋ฅผ ์ ๊ณตํด์ฃผ์ง๋ง, ์ด๋ ๋ฉ์๋๊ฐ ํธ์ถ๋ ์ง ํผ๋์ ์ค ์ ์๋ค.
์ ์ฝ๋์ ์๋๋ ๋งค๊ฐ๋ณ์์ ๋ฐํ์ ํ์ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๊ธฐ๋ฅผ ๊ธฐ๋ํ ์ ์์ง๋ง, ๊ธฐ๋์๋ ๋ค๋ฅด๊ฒ ์ปดํ์ผํ์์ c๋ ํญ์ Collection<?> ํ์ ์ด๋ฏ๋ก, ๋ชจ๋ "๊ทธ ์ธ"๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ์๋๋๋ก ๋์๋๊ธธ ์ํ๋ค๋ฉด, ๋ชจ๋ classify ๋ฉ์๋๋ฅผ ํ๋์ ๋ฉ์๋๋ก ํฉ์น ํ instanceof๋ก ๋งค๊ฐ๋ณ์์ ํ์ ์ ํ์ธํ๋ฉด ๋๋ค.
๋ค์ค์ ์ ํผ๋ ํํผ ๋ฐฉ๋ฒ
์์ ๊ฐ์ด ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ํ ๋๋ก ๋์ํ์ง ์๊ธฐ ๋๋ฌธ์, ์ ์ด์ ํผ๋์ ์ผ์ผํค๋ ์ํฉ์ ํผํ๋ ๊ฒ์ด ์ข๋ค. ์ ์ผ ์์ ํ ๋ฐฉ๋ฒ์ ๋งค๊ฐ๋ณ์ ์๊ฐ ๊ฐ์ ๋ค์ค์ ์๋ ๋ง๋ค์ง ์๊ณ , ๊ฐ๋ณ์ธ์๋ฅผ ์ฌ์ฉํ๋ ๋ฉ์๋๋ ๋ค์ค์ ์ํ์ง ์๋ ๊ฒ์ด๋ค. ๋ง์ฝ ๋ค์ค์ ์๊ฐ ํ์ํ๋ค๋ฉด ๋ค์ค์ ์ ๋์ ์ ๋ฉ์๋ ์ด๋ฆ์ ๋ค๋ฅด๊ฒ ์ง์ด์ฃผ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด๋ณด๋ ๊ฒ๋ ์ข๋ค.
์์ฑ์
๋ฉ์๋๋ ์์ ๊ฐ์ด ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ง์ด์ฃผ๋ ๊ฒ์ผ๋ก ํผ๋์ ํํผํ ์ ์์ง๋ง, ์์ฑ์๋ ์ด๋ฆ์ ๋ค๋ฅด๊ฒ ์ง์ด์ค ์ ์๋ค. ๋๋ฌธ์ ์์ฑ์์์ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํผ๋์ ํํผํ ์ ์๋ค.
์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋ ์ฌ์ฉ์ผ๋ก ์์ฑ์ ์ง์ ์ฌ์ฉ์ ๋์ฒด
๋งค๊ฐ๋ณ์๊ฐ ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋๋๋ก ํ์ฌ ์ด๋ ๊ฒ์ด ํธ์ถ๋ ์ง ํผ๋๋์ง ์๋๋ก ํจ
ex) ArrayList(int initialCapacity) vs ArrayList(Collection<? extends E> c)
๋ค์ค์ ์ ํผ๋์ผ๋ก ์๊ธฐ๋ ์์
List.remove(int index) vs List.remove(Object o)
์ ๋ค๋ฆญ๊ณผ ์คํ ๋ฐ์ฑ์ ๋ฑ์ฅ์ผ๋ก ๋ค์ค์ ์ ํผ๋์ด ๋์ฑ ์ฌํด์ก๋๋ฐ, ๋ํ์ ์ผ๋ก List์ remove ๋ฉ์๋๊ฐ ์๋ค.
set์ remove(Object o)
๋ฉ์๋๊ฐ ํธ์ถ๋์ด ์๋๋๋ก ํด๋น ๊ฐ์ฒด๋ฅผ ์ญ์ ํ์ง๋ง,
list๋ remove(Object o)
๊ฐ ์๋ remove(int index)
๋ฉ์๋๊ฐ ๋ค์ค์ ์๋์ด ์๊ธฐ ๋๋ฌธ์ ์ง์ ํ ์ธ๋ฑ์ค์ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๊ฒ ๋๋ค.
(๋ง์ฝ ์๋๋๋ก ๋์ํ๊ธธ ์ํ๋ค๋ฉด, list.remove(i)
๋์ list.remove((Integer) i)
๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.)
Last updated