我有一个通用接口(interface),我们称之为 GenericInterface<T> 。我需要将该接口(interface)的类对象传递给期望(通过另一个类型参数指定)该类型的特定实例的方法。假设我想调用 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 替换类对象参数。

最佳答案

有类似的问题:

  • Java generics - get class?
  • How to get a class instance of generics type T

  • 10-08 12:38