클래스 A { }
클래스 B는 A { }를 확장합니다.
객체 o1 = 새로운 A();
객체 o2 = 새로운 B();
o1 A 인스턴스 => true
o1 B 인스턴스 => 거짓
o2 인스턴스 오브 A => true // <================ 여기
o2 B 인스턴스 => true
o1.getClass().equals(A.class) => true
o1.getClass().equals(B.class) => 거짓
o2.getClass().equals(A.class) => false // <================여기
o2.getClass().equals(B.class) => true
getClass()는 인스턴스가 비교 중인 클래스의 하위 클래스가 아닌지 확인하려는 경우 유용합니다.
一个不常完美는 방법과 같습니다.
// 명시적 매개변수가 null인 경우 false를 반환해야 합니다.
if (otherObject == null) false를 반환합니다.
// 클래스가 일치하지 않으면 동일할 수 없습니다.
if (getClass() != otherObject.getClass()) return false;
// 이제 otherObject가 null이 아닌 Employee라는 것을 알 수 있습니다.
직원 other = (직원) otherObject;
// 필드의 값이 동일한지 테스트합니다.
return name.equals(other.name) && 급여 == other.salary && 고용일.equals(other.hireDay);
}