내 EqualTester
일반 클래스에서 generic 매개 변수의 재정의 된 equals(...)
메서드를 호출하려고하지만 Object.equals
을 대신 호출하는 것 같습니다.일반 클래스 내에서 equals 사용
import junit.framework.TestCase;
public class EqualityInsideGenerics extends TestCase {
public static class EqualTester<V> {
public boolean check(V v1, V v2) {
return v1.equals(v2);
}
}
public static class K {
private int i;
private Object o;
public K(Object o, int i) {
this.o = o;
this.i = i;
}
public boolean equals(K k) {
return ((k.o != null && k.o.equals(o)) || o == null) && (k.i == i);
}
};
public void testEqual() {
K k1 = new K(null, 0);
K k2 = new K(null, 0);
assertTrue(k1.equals(k2)); // This one ok
EqualTester<K> tester = new EqualTester<K>();
assertTrue(tester.check(k1, k2)); // This one KO!
}
}
이 작동하지 않는 이유를 설명해 주시겠습니까, 나는 내 EqualTester
클래스를 변경할 수있는 방법 : 여기 내 테스트 코드는?
K
은 실제로 매개 변수에 올바른 형식이 없으므로 Object.equals() 메서드를 재정의하지 않으므로 해당되는 이유는 무엇입니까?
감사합니다.
다행를 프로그래밍을 시작했다. 좀 더 고급스럽고 까다로운 정보가 필요한 경우 http://www.artima.com/lejava/articles/equality.html – Padmarag
캐스팅하기 전에 instanceof를 사용하면 ClassCastException이 필요하지 않습니다. try 블록. – Padmarag
완료! 감사합니다 ... –