如何将generics类的类对象转换为该类型的特定实例

我有一个通用接口,我们称之为GenericInterface 。 我需要将该接口的类对象传递给期望(通过另一个类型参数指定)该类型的特定实例的方法。 我们假设我想调用java.util.Collections.checkedList()

 List<GenericInterface> list = Collections.checkedList( new ArrayList<GenericInterface>(), GenericInterface.class); 

这不起作用,因为Class不能隐式地转换为Class<GenericInterface> ,最安全的方法是什么? 我能想到的最好的是:

 List<GenericInterface> list = Collections.checkedList( new ArrayList<GenericInterface>(), (Class<GenericInterface>) (Class) GenericInterface.class); 

它可以工作,但不会保护我免于例如将列表的类型更改为List而不用List替换类对象参数。

有类似的问题:

  • Javagenerics – 获取类?
  • 如何获取generics类型T的类实例

简而言之,没有办法在Java中找出generics类型参数的运行时类型。