Feu*_*mel 5 java generics casting
我有一个通用接口,让我们称之为GenericInterface<T>. 我需要将该接口的类对象传递给期望(通过另一个类型参数指定)该类型的特定实例的方法。让我们假设我想打电话java.util.Collections.checkedList():
List<GenericInterface<Integer>> list = Collections.checkedList(
new ArrayList<GenericInterface<Integer>>(),
GenericInterface.class);
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为Class<GenericInterface>不能隐式转换为Class<GenericInterface<Integer>>,最安全的方法是什么?我能想到的最好的是:
List<GenericInterface<Integer>> list = Collections.checkedList(
new ArrayList<GenericInterface<Integer>>(),
(Class<GenericInterface<Integer>>) (Class<?>) GenericInterface.class);
Run Code Online (Sandbox Code Playgroud)
它有效但不会保护我免于例如将列表的类型更改为List<SomeOtherInterface>而不将类对象参数替换为SomeOtherInterface.class.
Ter*_*for -1
还有类似的问题:
简而言之,Java 中没有办法找出泛型类型参数的运行时类型。
| 归档时间: |
|
| 查看次数: |
6976 次 |
| 最近记录: |