Вопрос проверяет понимание устройства generics в Java и ограничений, связанных с работой JVM во время выполнения.
Короткий ответ
В runtime невозможно получить точный тип generic-параметра из-за type erasure. Во время компиляции generic-типы стираются и заменяются на Object или на верхнюю границу. JVM не хранит информацию о конкретных параметрах типа. Поэтому List<String> и List<Integer> в runtime выглядят одинаково. Это осознанное архитектурное решение Java.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.