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

时间:2013-05-24 12:31:28

标签: java generics casting

我有一个通用接口,我们称之为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替换类对象参数。

1 个答案:

答案 0 :(得分:0)

有类似的问题:

  

简短的回答是,没有办法找出运行时类型   Java中的泛型类型参数。