Eclipse говорит, что операция instanceof не разрешена с параметром типа из-за ластика универсального типа.
Я согласен с тем, что во время выполнения информация о типе не сохраняется. Но рассмотрим следующее общее объявление класса:
class SomeClass<T>{
T t;
SomeClass(Object o){
System.out.println(o instanceof T); // Illegal
}
}
Во время выполнения T не будет! Но если я создам экземпляр этого класса типа Integer, тогда соответствующий объект будет иметь поле t типа Integer.
Тогда почему я не могу проверить тип переменной с помощью T, который можно заменить на Integer во время выполнения. И я бы сделал что-то вроде «o instanceof Integer».
В каких случаях разрешение instanceof с параметром типа может вызвать проблемы, поэтому это запрещено?