2023. 2. 7. 09:34γJAVA/Effective JAVA
item14. Comparableμ ꡬνν μ§ κ³ λ―ΌνλΌ.
" p90. μ λ€λ¦ μΈν°νμ΄μ€μ΄λ―λ‘ compareTo λ©μλμ μΈμ νμ μ μ»΄νμΌ νμμ μ ν΄μ§λ€. μ λ ₯ μΈμμ νμ μ νμΈνκ±°λ νλ³νν νμκ° μλ€λ λ»μ΄λ€."
[TIL] 2023.01.09 μ λ€λ¦ Generic μ΄λ? (tistory.com)
μ¬κΈ°μ μ λ€λ¦μ λν΄μ νλ² TIL μ£Όμ λ‘ λ€λ£¬ μ μ΄ μκΈ΄ νλ° μ΄νν°λΈ μλ° μ벽곡λ΅μμλ ν΄λΉ λ΄μ©μ΄ λμμ νλ² λ μ 리νλ€.
πΎ μ λ€λ¦μ μ¬μ©ν΄μΌ νλ μ΄μ
μμμλ λμμλ―μ΄ μ λ€λ¦ νμ μ μ¬μ©ν¨μΌλ‘μ¨ μλͺ»λ νμ μ΄ μ¬μ©λ μ μλ λ¬Έμ λ₯Ό μ»΄νμΌ κ³Όμ μμ μ κ±°ν μ μκΈ° λλ¬Έμ΄λ€.
public class PhoneNumber implements Comparable<PhoneNumber>
{
...
}
Comparableμ΄ νμ μ μΈμλ‘ λ°λ μ λ€λ¦ μΈν°νμ΄μ€λ‘ PhoneNumberλ₯Ό νμ μΌλ‘ μ§μ ν΄μ£Όλ©΄
@Override
public int compareTo(PhoneNumber pn)
{
return COMPARATOR.compare(this, pn);
}
compareTo λ©μλμ μΈμ νμ μ PhoneNumberλ‘ μ»΄νμΌ νμμ μ ν΄μ§λ€.
μ΄λ κ² μ ν΄μ§λ©΄ μ λ ₯ μΈμμ νμ μ νμΈνκ±°λ νλ³νν νμκ° μλ€. μΈμμ νμ μ΄ μλͺ»λλ€λ©΄ μ»΄νμΌ μμ²΄κ° λμ§ μκ² μλ° μ»΄νμΌλ¬λ μ½λμμ μλͺ» μ¬μ©λ νμ λλ¬Έμ λ°μνλ λ¬Έμ μ μ μ κ±°νκΈ° μν΄μ μ λ€λ¦ μ½λμ κ°ν νμ 체ν¬λ₯Ό νκΈ° λλ¬Έλ€.
π λ°νμ μ νμ μλ¬κ° λλ κ²λ³΄λ€λ μ»΄νμΌ μμ 미리 νμ μ κ°νκ² μ²΄ν¬ν΄μ μλ¬λ₯Ό μ¬μ μ λ°©μ§νλ κ²μ΄ μ’λ€.
μ΄λ κ² μ λ€λ¦ μ½λλ₯Ό μ¬μ©νλ©΄ νμ μ κ΅ννκΈ° λλ¬Έμ μμλ₯Ό μ°Ύμμ¬ λ νμ λ³νν νμκ° μμ΄ νλ‘κ·Έλ¨ μ±λ₯μ΄ ν₯μλλ ν¨κ³Όλ μλ€.
π μ λ€λ¦ νμ μ μ¬μ©νλ μ΄μ
- μ¬μ¬μ©μ± μ¦κ°
: μ λ€λ¦ νμ μ μ¬λ¬ νμ μ νλΌλ―Έν°λ₯Ό μ½μ ν΄ κ°μ²΄λ₯Ό μμ±ν μ μκΈ° λλ¬Έμ μ½λλ₯Ό κ°κ²°νκ² νκ³ μ¬μ¬μ©μ±μ λμΈλ€.
- μ»΄νμΌ μ νμ μλ¬ λ°κ²¬ κ°λ₯
: μ λ€λ¦ νμ μ κ²½μ° μ»΄νμΌ μ μλͺ» μ¬μ©λλ νμ λ¬Έμ μ μ μ κ±°νκΈ° μν΄μ κ°ννμ 체ν¬λ₯Ό μνν΄μ μ»΄νμΌ μ΄ν λ°νμ λ¨κ³μμ νμ λ¬Έμ κ° λ°μν κ°λ₯μ±μ λ°©μ§ν΄μ€λ€.
- μ»΄νμΌλ¬κ° νμ λ³ν μν
: μ»΄νμΌ λ¨κ³μμ μ»΄νμΌλ¬κ° νμ μΊμ€ν μ μνν΄μ£ΌκΈ° λλ¬Έμ λΆνμνκ² μ½λμμ νμ μΊμ€ν μ ν΄μ€ νμκ° μλ€.