我已经阅读了 Get type of a generic parameter in Java with reflection post,这让我想知道这怎么可能。我使用了某人发布的解决方案并使用了代码
List<Integer> l = new ArrayList<>();
Class actualTypeArguments = (Class) ((ParameterizedType) l.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
但是,这对我不起作用,导致
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
如果我删除类转换,实际参数的类型是E
,这是 List 接口的类型定义。
因此,我的问题是,我在这里做错了吗?无论如何,这种行为是我所预料的,因为类型应该在编译时被删除,对吗?