.equals() 메서드에 'getClass()' 또는 'instanceof'를 사용해야 합니까?
.equals()를 생성할 때 Eclipse를 사용하는 메서드의 경우 'instanceof' 또는 '.getClass()'를 사용하여 유형을 비교하는 옵션이 있습니다. 기본적으로 Eclipse는 '.getClass()'를 사용하므로 많은 프로그래머가 'instanceof'로 전환해야 할지 고민하게 됩니다.
차이점이 무엇인가요?
.getClass()는 두 객체의 런타임 유형을 직접 비교하는 반면, instanceof는 객체가 특정 클래스나 인터페이스의 인스턴스인지 확인합니다. 예:
if (getClass() != obj.getClass()) // Using getClass() if (!(obj instanceof MyClass)) // Using instanceof
어떤 것을 사용해야 합니까?
Java 전문가 Josh Bloch에 따르면 'instanceof'는 제한하지 않기 때문에 선호되는 접근 방식입니다. 동일한 런타임 유형과 동일합니다. 즉, 동일한 중요한 측면을 공유하는 객체의 동등성에 영향을 주지 않고 클래스를 확장하고 메서드를 추가할 수 있습니다.
게다가 이는 하위 클래스를 사용할 수 있어야 한다는 Liskov 대체 원칙과도 일치합니다. 코드를 깨지 않고 슈퍼클래스를 대신합니다. '.getClass()'를 사용하면 이 원칙을 위반하여 HashTable과 같은 컬렉션에서 예기치 않은 동작이 발생합니다.
요약하면 'instanceof'는 더 많은 유연성을 제공하며 .equals() 메서드에 권장됩니다. 'instanceof'를 사용하여 'if (obj == null)' 확인을 제거할 수 있지만 일반적으로 명확성과 완전성을 위해 유지하는 것이 좋습니다.
위 내용은 `getClass()`와 `equals()`의 `instanceof`: 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!