Java에서 equals() 메서드를 재정의하는 방법
equals() 메서드 재정의는 사용자 정의에 대한 동등 비교 동작을 사용자 정의하는 데 필수적입니다. 자바의 객체. 다음은 이를 효과적으로 수행하는 데 도움이 되는 포괄적인 가이드입니다.
문제:
주어진 스니펫에서 같음을 사용하여 연령 필드를 비교하려고 할 때 오류가 발생했습니다( ), 이는 String 객체용으로 설계되었습니다. 정수 값에는 == 연산자를 사용해야 합니다.
해결 방법:
이 오류를 해결하려면 == 연산자를 사용하여 나이와 같은 기본 데이터 유형을 비교하세요. 수정된 코드는 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | public boolean equals(People other){
boolean result;
if ((other == null) || (getClass() != other.getClass())){
result = false;
}
else {
People otherPeople = (People)other;
result = name.equals(other.name) && age == other.age;
}
return result;
}
|
로그인 후 복사
추가 설명:
1. 프로세스 재정의:
- equals()를 재정의하려면 @Override 주석으로 선언하세요.
- 메서드는 동일 인수 하나를 사용하여 같음을 나타내는 부울을 반환해야 합니다. 클래스로 입력하세요.
2. Null 확인:
- NullPointerException을 방지하려면 항상 obj == null을 사용하여 null을 확인하세요.
3. 클래스 비교:
- getClass() != other.getClass()를 사용하여 비교할 객체가 동일한 클래스인지 확인합니다.
4. 사용자 정의 비교 논리:
- else 블록 내에서 사용자 정의 비교 논리를 정의합니다.
- 문자열 비교에는 equals()를 사용하고 기본 유형에는 ==를 사용합니다.
- 결정을 내리는 모든 관련 분야를 고려하세요. Equality.
예:
제공된 예는 Person 클래스의 equals()를 재정의하고 이름과 나이가 동일한지 비교합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!