본문 바로가기

Books/Effective Java2

3장. 모든 객체의 공통 메서드 아이템10. equals는 일반 규약을 지켜 재정의하라. 언제 사용할까 ? 논리적 동치성을 확인해야 할 때 값 클래스(String, Integer 등) 등 객체가 같은지가 아니라 값이 같은지 알고 싶을 때 다음 상황 중 하나에 해당하면 재정의 하지 않는 것이 최선. 각 인스턴스가 본질적으로 고유하다. 인스턴스의 ‘논리적 동치성’ 을 검사할 일이 없다. 상위 클래스에서 재정의한 equals 가 하위 클래스에도 딱 들어맞는다. 클래스가 private 이거나 package-private 이고 equals 메서드를 호출할 일이 없다. 오버라이딩 시 고려 사항: 비교 대상 필드 모두 비교 null 체크 반사성(reflexivity): 자신과 자신을 비교했을 때 true 반환 대칭성(symmetry): a.equa.. 2024. 4. 3.
2장. 객체 생성과 파괴 아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라. 장점 이름을 가질 수 있다. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다. 단점 상속을 하려면 public 이나 protected 생성자가 필요하니 정적 팩터리 메서드만 제공하면 하위 클래스를 만들 수 없다. 정적 팩터리 메서드는 프로그래머가 찾기 어렵다. 핵심정리 정적 팩터리 메서드와 public 생성자는 각자의 쓰임새가 있으니 상대적인 장단점을 이해하고 사용하는 것이 좋다. 그렇다고 하더라도 정적 팩터리를 사용하는 게 유리한 경.. 2024. 3. 30.