>Java >java지도 시간 >Java에서 equals() 메서드를 올바르게 재정의하는 방법은 무엇입니까?

Java에서 equals() 메서드를 올바르게 재정의하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-20 19:00:18899검색

How to Properly Override the equals() Method in Java?

Java에서 equals() 메서드를 재정의하는 방법

equals() 메서드 재정의는 사용자 정의에 대한 동등 비교 동작을 사용자 정의하는 데 필수적입니다. 자바의 객체. 다음은 이를 효과적으로 수행하는 데 도움이 되는 포괄적인 가이드입니다.

문제:

주어진 스니펫에서 같음을 사용하여 연령 필드를 비교하려고 할 때 오류가 발생했습니다( ), 이는 String 객체용으로 설계되었습니다. 정수 값에는 == 연산자를 사용해야 합니다.

해결 방법:

이 오류를 해결하려면 == 연산자를 사용하여 나이와 같은 기본 데이터 유형을 비교하세요. 수정된 코드는 다음과 같습니다.

public boolean equals(People other){
    boolean result;
    if((other == null) || (getClass() != other.getClass())){
        result = false;
    } // end if
    else{
        People otherPeople = (People)other;
        result = name.equals(other.name) && age == other.age;
    } // end else

    return result;
} // end equals

추가 설명:

1. 프로세스 재정의:

  • equals()를 재정의하려면 @Override 주석으로 선언하세요.
  • 메서드는 동일 인수 하나를 사용하여 같음을 나타내는 부울을 반환해야 합니다. 클래스로 입력하세요.

2. Null 확인:

  • NullPointerException을 방지하려면 항상 obj == null을 사용하여 null을 확인하세요.

3. 클래스 비교:

  • getClass() != other.getClass()를 사용하여 비교할 객체가 동일한 클래스인지 확인합니다.

4. 사용자 정의 비교 논리:

  • else 블록 내에서 사용자 정의 비교 논리를 정의합니다.
  • 문자열 비교에는 equals()를 사용하고 기본 유형에는 ==를 사용합니다.
  • 결정을 내리는 모든 관련 분야를 고려하세요. Equality.

예:

제공된 예는 Person 클래스의 equals()를 재정의하고 이름과 나이가 동일한지 비교합니다.

public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }

    if (obj.getClass() != this.getClass()) {
        return false;
    }

    final Person other = (Person) obj;
    if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
        return false;
    }

    if (this.age != other.age) {
        return false;
    }

    return true;
}

결론:

재정의 equals() 메소드를 사용하면 사용자 정의 객체에 대한 사용자 정의 동등 비교를 정의할 수 있습니다. 제공된 단계와 예시를 주의 깊게 따르면 특정 속성을 기준으로 객체를 효과적으로 비교할 수 있습니다.

위 내용은 Java에서 equals() 메서드를 올바르게 재정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.