item 10 sungjaeyoon - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
equalsλ μΌλ° κ·μ½μ μ§μΌ μ¬μ μνλΌ.
μ¬μ μλ₯Ό νμ§ μλλ€.
equals
λ©μλλ μ¬μ μνκΈ° μ¬μ보μ΄μ§λ§ κ³³κ³³μ ν¨μ μ΄ μμ΄ ν° λ¬Έμ κ° λ μ μλ€.
κ°μ₯ μ¬μ΄ κΈΈμ μμ μ¬μ μλ₯Ό νμ§ μλ κ²μ΄λ€. μλ μν©μ ν΄λΉνλ€λ©΄ μ¬μ μ νμ§ μλκ²μ΄ μ΅μ μ΄λ€.
- κ° μΈμ€ν΄μ€κ° λ³Έμ§μ μΌλ‘ κ³ μ νλ€. κ°μ νννλκ² μλλΌ κ°μ²΄λ₯Ό νννλ ν΄λμ€κ° ν΄λΉλλ€.
- μΈμ€ν΄μ€μ λ Όλ¦¬μ λμΉμ±μ κ²μ¬ν μΌμ΄ μλ€.
- μμ ν΄λμ€μμ μ¬μ μν
equals
κ° νμ ν΄λμ€μλ λ± λ€μ΄λ§λλ€. - ν΄λμ€κ°
private
μ¬μequals
λ₯Ό νΈμΆν μΌμ΄ μλ€.
μ€μλ‘λΌλ νΈμΆλλ κ±Έ λ§κ³ μΆλ€λ©΄ μμΈμ²λ¦¬λ‘ throw new AssertionError()
λ₯Ό λ°μμν€μ..
μ¬μ μ νλ μν©
- λ Όλ¦¬μ λμΉμ±μ λΉκ΅ν΄μΌν λ μ¬μ μνλ©΄ μ’λ€. κ°μ²΄κ° μλλΌ κ°μ΄ κ°μμ§λ₯Ό μκ³ μΆμλ
- Mapμ ν€, Setμ μμ λ±μΌλ‘ μ¬μ©ν λ
μ¬μ μ ν λλ λ€μ μΌλ° κ·μ½μ λ°λΌμΌ νλ€.
- λ°μ¬μ± : κ°μ²΄ Xμ λνμ¬
x.equals(x)
λ true μ¬μΌνλ€. - λμΉμ± : κ°μ²΄ X,yμ λνμ¬
x.equals(y)
κ° trueμ΄λ©΄y.equals(x)
λ true μ¬μΌνλ€. - μΆμ΄μ± : κ°μ²΄ x,y,zμ λνμ¬ x=y , y=z μ΄λ©΄ x=zλ true μ¬μΌνλ€.
- μΌκ΄μ± : nullμ΄ μλ μ°Έμ‘° κ°x,yμ λνμ¬
x.equals(y)
λ νμ trueκ±°λ falseμ¬μΌνλ€. - null-μλ : nullμ΄ μλ xμ λνμ¬
x.equals(null)
μ false μ΄λ€.
μ’μ equalsλ₯Ό ꡬννλ λ²
- == μ°μ°μλ₯Ό μ¬μ©ν΄ μκΈ° μμ μ μ°Έμ‘°μΈμ§ νμΈνλΌ.
- instanceof μ°μ°μλ‘ μ λ ₯μ΄ μ¬λ°λ₯Έ νμ μΈμ§ νμΈνλΌ. nullκ²μ¬λ ν΄μ€λ€.
- μ λ ₯μ μ¬λ°λ₯Έ νμ μΌλ‘ νλ³ννλΌ.
- μ λ ₯ κ°μ²΄μ μκΈ° μμ μ λμλλ ν΅μ¬ νλλ€μ΄ λͺ¨λ μΌμΉνλμ§ νλμ© κ²μ¬νλΌ.
- μ±λ₯μ μν΄ λ€λ₯Ό κ°λ₯μ±μ΄ λ ν¬κ±°λ, λΉμ©μ΄ μΌ νλλ₯Ό λ¨Όμ λΉκ΅ν΄λΌ.
μ 리
equals λ©μλλ₯Ό μ¬μ μνμ§ λ§μ. κΌ νμνλ€λ©΄ 5κ°μ§ κ·μ½μ λ°λμ μ§μΌμΌνλ€.