我有一个通用接口,我们称之为GenericInterface<T>
。我需要将该接口的类对象传递给期望(通过另一个类型参数指定)该类型的特定实例的方法。我们假设我想打电话给java.util.Collections.checkedList()
:
List<GenericInterface<Integer>> list = Collections.checkedList(
new ArrayList<GenericInterface<Integer>>(),
GenericInterface.class);
这不起作用,因为Class<GenericInterface>
无法隐式投放到Class<GenericInterface<Integer>>
,最安全的方式是什么?我能提出的最好的是:
List<GenericInterface<Integer>> list = Collections.checkedList(
new ArrayList<GenericInterface<Integer>>(),
(Class<GenericInterface<Integer>>) (Class<?>) GenericInterface.class);
它有效,但不会保护我免受例如将列表的类型更改为List<SomeOtherInterface>
,而不使用SomeOtherInterface.class
替换类对象参数。
答案 0 :(得分:0)
有类似的问题:
简短的回答是,没有办法找出运行时类型 Java中的泛型类型参数。