You will be fine

<이펙티브 자바> 3. 모든 객체의 공통 메서드

by BFine
반응형

www.yes24.com/Product/Goods/65551284

 

이펙티브 자바 Effective Java 3/E

자바 플랫폼 모범 사례 완벽 가이드 - Java 7, 8, 9 대응자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브

www.yes24.com

3장

3-1 equals는 일반 규약을 지켜 재정의 해라

  • 재정의 할때
    • 상위 클래스의 equals가 완벽하게 동일한지 판단 못하는경우
  • 조건 4가지
    1. 반사성
      • 객체는 자기자신과 같아야함
    2. 대칭성
      • 서로에 대한 동치여부에 똑같이 답해야함
    3. 추이성
      • a == b , b == c 이면 a == c
    4. 일관성
      • 수정되지않는한 항상 같아야한다.
    5. Null
  • 구현방법
    • == 이용해 자기 참조인지 확인
    • instanceof 로 올바른 타입인지 확인
    • 입력을 형변환
    • 핵심 필드들이 모두 일치하는지 하나씩 검사
  • equals를 재정의할땐 hashCode도 재정의

3-2 hashCode도 재정의하라

  • 논리적으로 같은 객체는 같은 해시코드반환
  • 만드는 방법
    • 기본타입이라면 Type.hashCode를 사용
    • 소수 * result + c

3-3 toString을 항상 재정의하라

3-4 clone 재정의는 주의하자

  • Cloneable 인터페이스
    • Object 의 clone 동작 방식을 결정
  • clone
    • 원본 객체에는 피해를 주지않고 복제된 객체의 불변을 보장해야함

3-5 Comparable 을 고려하라

  • Comparable을 구현한 객체

    • Arrays.sort 사용가능
  • java 8 Comparator

    • 성능저하 발생
  • CompareTo

    • < , > 연산자는 쓰지말고 참조타입의 compare 메서드나 Compartor 인터페이스를 사용하자
반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기