Дано:
public class C<T> {
private class D {
public boolean equals( Object o ) {
if ( !(o instanceof D) ) // line 4
return false;
D other = (D)o; // line 6
return i == other.i;
}
int i;
}
}
Я получаю:
C.java:4: illegal generic type for instanceof
if ( !(o instanceof D) )
^
Я также получаю предупреждение "непроверенный бросок" о строке 6. Почему? o не является общим типом - это просто обычный Object. Как я могу правильно реализовать equals() как для проверки, так и для приведения в экземпляр D?
Примечание. Очевидно, что этот пример кода представляет собой сокращенную версию моего фактического кода. Реальные классы для C и D намного больше, а D - внутренний <<29 > C, используемый его реализацией.
FYI: реальный D использует общий параметр T.