인프런 커뮤니티 질문&답변

ghuhan18님의 프로필 이미지
ghuhan18

작성한 질문수

김영한의 실전 자바 - 중급 2편

직접 구현하는 배열 리스트5 - 제네릭2

equals 메서드

작성

·

26

0

 

image.png

여기에서 E 타입에 대해서 equals 메서드를 적용할 수 있는 이유가 뭔가요?
물론 String, int 같이 기본형이거나 String 같이 많이 쓰이는 타입은 override 가 되어 있어서 문제 없는 것은 알고 있지만

우리가 정의한 객체의 경우에는 equals 가 override 안되어 있어서 우리가 원하는 결과값이 안나올 수도 있지 않나요 ?

답변 2

0

안녕하세요. ghuhan18님, 공식 서포터즈 y2gcoder입니다.

정확하게 제가 ghuhan18님의 질문 의도를 파악한 것인지는 모르겠습니다. equals 로 비교하기 때문에 저희가 만든 객체를 사용한다면 equals 를 재정의해서 객체끼리 비교할 수 있습니다. 그렇지 않다면 Object 의 equals 를 그대로 사용해서 객체 간의 비교를 사용할 수도 있습니다. == 에 비해 equals 가 객체 간의 비교 방법을 개발자가 조작할 수 있다는 점에서 equals를 사용할 수 있습니다 🙂

우리가 정의한 객체의 경우에는 equals 가 override 안되어 있어서 우리가 원하는 결과값이 안나올 수도 있지 않나요 ?

우리가 정의한 객체를 비교하는 방법은 해당 객체의 equals()에서 담당합니다. 말씀하신 것처럼 equals 를 재정의하지 않았다면 Object 의 equals()를 사용하는 것이 해당 객체 간의 비교하는 방법입니다 🙂

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

ghuhan18님, 질문하신 내용 잘 확인하였습니다. 말씀하신 대로 equals 메서드는 대부분의 객체에서 기대하는 동작을 수행하려면 적절하게 오버라이드되어야 합니다. 이와 관련해서 유사한 질문과 답변이 다음 링크에 잘 설명되어 있습니다:

  • equals()가 비교하는 것이 뭔가요??

    • 이 질문에서는 equalshashCode의 관계와 함께, equals 메서드를 오버라이드하지 않았을 때 일어나는 일을 설명해줍니다. 기본적으로 Object 클래스의 equals 메서드는 객체의 주소값을 비교하기 때문에 원하는 결과가 나오지 않을 수 있습니다.
  • isEqualTo 동작과정이 궁금합니다!

    • 이 질문에서는 복잡한 동일성 비교와 동등성 비교에 대해서 상세히 다루고 있습니다. 어떤 경우에 isEqualToisSameAs를 사용해야 하는지를 잘 설명합니다.

위의 링크를 참고하시면 equals 메서드의 동작 원리와 사용 시 주의할 점에 대해 더 깊이 이해하실 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ghuhan18님의 프로필 이미지
ghuhan18

작성한 질문수

질문하기