Дано:
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
- это не общий тип - это просто простой объект
. Как я могу правильно реализовать equals ()
, проверяя и приводя к экземпляру D
?
Примечание. Очевидно, что этот пример кода представляет собой сокращенную версию моего актуальный код. Реальные классы для C
и D
намного больше, а D
является частным
внутренним классом для C
. по его реализации.
К вашему сведению: Реальный D
действительно использует общий параметр T
.