Skip to content

ITEM 10. equals는 일반 규약을 지켜 재정의하라 #28

@dhrdlxl

Description

@dhrdlxl

float, double, null을 정상 값으로 취급하는 필드를 포함하는 서로 다른 2개의 class를 정의하고,
한 class만 equals를 정의하여 boolean List.contains(Object o)를 사용했을 때 어떻게 차이가 있는지 비교해 봅시다.

  • 자바 버전에 따라 contains의 내부 동작이 다를 수 있으므로 List가 아닌 다른 자료구조를 사용하여도 무방합니다.
  • 단, equals method는 어노테이션을 사용하지 않고 아래 규칙에 맞게 직접 구현해 봅시다.
1. == 연산자를 사용해 입력이 자기 자신의 참조인지 확인한다.
2. instansceof 연산자로 입력이 올바른 타입인지 확인한다.
3. 입력을 올바른 타입으로 형변환한다.
4. 입력 객체와 자기 자신의 대응되는 핵심 필드들이 모두 일치하는지 하나씩 검사한다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions