item 14 incheol - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Effective Java 3e ์์ดํ 14๋ฅผ ์์ฝํ ๋ด์ฉ ์ ๋๋ค.
compareTo๋ ๋จ์ ๋์น์ฑ ๋น๊ต
์ ๋ํด ์์
๊น์ง ๋น๊ตํ ์ ์์ผ๋ฉฐ ์ ๋ด๋ฆญํ๋ค. Comparable์ ๊ตฌํํ๋ค๋ ๊ฒ์ ๊ทธ ํด๋์ค์ ์ธ์คํด์ค๋ค์๋ ์์ฐ์ ์ธ ์์
๊ฐ ์์์ ๋ปํ๋ค.
compareTo ๊ท์ฝ์ ์์ธํ ์ดํด๋ณด์.
- ์ฒซ ๋ฒ์งธ ๊ท์ฝ์ ๋ ๊ฐ์ฒด ์ฐธ์กฐ์ ์์๋ฅผ ๋ฐ๊ฟ ๋น๊ตํด๋ ์์ํ ๊ฒฐ๊ณผ๊ฐ ๋์์ผ ํ๋ค๋ ์๊ธฐ๋ค.
- ๋ ๋ฒ์งธ ๊ท์ฝ์ ์ฒซ๋ฒ์งธ๊ฐ ๋ ๋ฒ์งธ๋ณด๋ค ํฌ๊ณ ๋ ๋ฒ์งธ๊ฐ ์ธ ๋ฒ์งธ๋ณด๋ค ํฌ๋ฉด, ์ฒซ ๋ฒ์งธ๋ ์ธ ๋ฒ์งธ๋ณด๋ค ์ปค์ผ ํ๋ค๋ ๋ป์ด๋ค.
- ๋ง์ง๋ง ๊ท์ฝ์ ํฌ๊ธฐ๊ฐ ๊ฐ์ ๊ฐ์ฒด๋ค๋ผ๋ฆฌ๋ ์ด๋ค ๊ฐ์ฒด์ ๋น๊ตํ๋๋ผ๋ ํญ์ ๊ฐ์์ผ ํ๋ค๋ ๋ป์ด๋ค.
Comparable์ ๊ตฌํํ ํด๋์ค๋ฅผ ํ์ฅ
ํด ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด, ํ์ฅํ๋ ๋์ ๋
๋ฆฝ๋ ํด๋์ค
๋ฅผ ๋ง๋ค๊ณ , ์ด ํด๋์ค์ ์๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ํ๋๋ฅผ ๋์.
๋ง์ง๋ง ๊ท์ฝ์ ๊ฐ๋จํ ๋งํ๋ฉด compareTo
๋ฉ์๋๋ก ์ํํ ๋์น์ฑ ํ
์คํธ์ ๊ฒฐ๊ณผ๊ฐ equals
์ ๊ฐ์์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ ์ด์ ๋ ์ ๋ ฌ๋ ์ปฌ๋ ์
๋ค์ ๋์น์ฑ์ ๋น๊ตํ ๋ equals ๋์ compareTo๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
compareTo ๋ฉ์๋๋ ๊ฐ ํ๋๊ฐ ๋์น์ธ์ง๋ฅผ ๋น๊ตํ๋ ๊ฒ ์๋๋ผ ๊ทธ ์์๋ฅผ ๋น๊ตํ๋ค. Comparable์ ๊ตฌํํ์ง ์์ ํ๋๋ ํ์ค์ด ์๋ ์์๋ก ๋น๊ตํด์ผ ํ๋ค๋ฉด Comparator๋ฅผ ๋์ ์ฌ์ฉํ๋ค.
ํด๋์ค์ ํต์ฌ ํ๋๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์ด๋ ๊ฒ์ ๋จผ์ ๋น๊ตํ๋๋๊ฐ ์ค์ํด์ง๋ค. ๊ฐ์ฅ ํต์ฌ์ ์ธ ํ๋๋ถํฐ ๋น๊ตํด๋๊ฐ์