Почему я получаю «Недопустимый универсальный тип для instanceof»?

Дано:

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 .

37
задан Paul J. Lucas 23 October 2010 в 00:56
поделиться