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 с параметром типа может вызвать проблемы, так что это запрещено?