아래의 글은 조슈아 블로크 저/개앞맵시 역, 『이펙티브 자바 Effective Java 3/E
』, 인사이트(2018), 7-13 쪽의 내용을 기반으로 작성하였습니다.
equals가 뭐지?
잘 모르면 무턱대고 정의하지는 마라, Object클래스의 equals를 그대로 사용하라
왜냐하면
정의하지 않고 그대로 사용하면 ? 현재 구현체는 동일한 객체는 자기 자신만 같게 됨.
동일/동등 이라고도 하고
식별성 논리적 동치성이라도 하고
identity와 equity 이 차이 ( 인터뷰 기초 문제이지도 하지요 ㅎㅎ)
identity : 물리적으로 같은 객체인가?
equals : 같은 값인가?
일반 규약은 뭐지? > equals 메서드를 재정의 할때는 일반 규칙을 따라야함.
반사성 : reflexivity : x.equals(x) = true
대칭성 : symmetry : x.equals(y) == true 이면 y.equals(x) == true이다
추이성 : transitivity : x.equals(y) == true 이고 y.equals(z) == true 이면 x.equals(z) == true 이다
일관성 : consistency : x.equals(y) 반복호출시 항상 일관된 값
null아님 : x.equals(null) 은 false 이다
왜 지켜야하지? > 그러니 잘못 만들면 side-effect가 발생함. 즉, equals를 많은 곳에서 사용하고 있음.
사용하는 곳, collection class, 객체 비교, serialization,
참고 사이트 :
dzone.com/articles/identity-vs-equality-in-java
Identity Vs. Equality in Java - DZone Java
In this post, we take a quick look at identity and equality in Java, what they are, and how they compare to one another.
dzone.com
헷갈리기 쉬운 “동등비교” 와 “정렬”
입사하여 처음으로 참여하게 된 프로젝트는 보험회사 직원들의 업무 관리 프로그램을 구축하는 것이었습니다. 자바로 개발하는 프로젝트는 처음이여서 어떻게 구현해야하는지에 대한 걱정이 �
www.nextree.co.kr
d2.naver.com/helloworld/831311
www.gisdeveloper.co.kr/?p=5332
Java에서 HashMap을 위한 Custom Key 정의하기 – GIS Developer
Java의 HashMap 자료구조는 고유한 값인 Key와 1:1로 연관되는 값(Value)을 하나의 쌍(Pair)로 하여 여러 개의 쌍을 저장하는 자료구조입니다. 흔히 Key 값으로 문자열이나 정수값을 사용하는 것으로도 충
www.gisdeveloper.co.kr
리스코프 치환 원칙 - Liskov Substitution Principle for Primer
리스코프 치환 원칙 LSP Liskov Substitution Principle 은 객체-디자인의 S.O.L.I.D 5원칙 중의 가장 이해하기 어려운 원칙이라고 할 수 있습니다. 다른 원칙들은 이름에서 힌트를 얻을 수 있는데 LSP만은 이�
vandbt.tistory.com
'독서관련 > Effective Java 3 Edition' 카테고리의 다른 글
CH03 모든 객체의 공통 메서드 : 아이템11 : toString을 항상 재정의하라 (0) | 2020.10.12 |
---|---|
CH02 객체 생성과 파괴 : 아이템1 : 생성자 대신 정적 팩터리 메서드 고려하라 (0) | 2020.10.12 |