Дано:
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
.