如何将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类型参数的运行时类型。