Genéricos de Java - obtendo o tipo real de parâmetro genérico
eu liObter tipo de um parâmetro genérico em Java com reflexão post e isso me fez pensar como isso seria possível. Eu usei a solução que alguém postou e usando o código
List<Integer> l = new ArrayList<>();
Class actualTypeArguments = (Class) ((ParameterizedType) l.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
Isso, no entanto, não funciona para mim, resultando em
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
Se eu remover a conversão de classe, o tipo do argumento real éE
, que é a definição de tipo da interface List.
Minha pergunta é, portanto, estou fazendo algo errado aqui? Esse comportamento é algo que eu teria esperado de qualquer maneira, já que os tipos devem ser apagados durante o tempo de compilação, correto?