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

问题描述 投票:0回答:1

我有一个通用界面,我们称之为

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
替换类对象参数。
    

java generics casting
1个回答
0
投票

    Java 泛型 - 获取类?
  • 如何获取泛型类型T的类实例
简单的回答是,没有办法找出运行时类型 Java 中的泛型类型参数。

© www.soinside.com 2019 - 2024. All rights reserved.