5

我有一个通用接口,让我们调用它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.

4

1 回答 1

0

有类似的问题:

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

于 2013-05-24T12:42:15.667 回答