Как уже указывалось, это невозможно.Я хотел бы добавить, что это из-за того, что известно как Тип Erasure .Официальный учебник по Java содержит следующую краткую сводку:
В язык Java были введены общие сведения для обеспечения более строгих проверок типов во время компиляции и для поддержки общего программирования.Для реализации обобщений Java-компилятор применяет стирание типов к:
- Заменить все параметры типа в универсальных типах их границами или Object, если параметры типа не ограничены.Поэтому созданный байт-код содержит только обычные классы, интерфейсы и методы.
- Вставьте приведение типов в случае необходимости, чтобы сохранить безопасность типов.
- Создайте методы-мосты, чтобы сохранить полиморфизм в расширенных обобщенных типах.
Стирание типов гарантирует, что новые классы для параметризованных типов не создаются;следовательно, генерики не несут затрат времени выполнения.
Ключ здесь "Таким образом, полученный байт-код содержит только обычные классы, интерфейсы и методы." .По этой причине невозможно выполнить проверку instanceof
, которую вы пытаетесь выполнить.