假设我有一个 ParameterizedType
具有特定类型:Container<Integer>
,
我怎样才能从中得到非特定类型:Container<E>
.
我希望能够匹配类型参数 E
及其具体值(value)Integer
.
澄清一下,我对从 Container<Integer>
中获取 Int 的常见问题不感兴趣。字段。
最佳答案
这可能比描述的更棘手,因为类型变量也可能来自层次结构中的任何位置,并且变量索引可以在每个级别轻松更改。例如:
interface Container<E, T> {
}
//Notice how E, T became T, E, so indices can not be trusted
interface SubContainer<E, T> extends Container<T, E> {
}
这意味着您需要遍历层次结构并收集每个级别的变量。
我建议你使用 GeAnTyRef对于类似的场景,因为它已经处理了复杂性(并且可能已经有办法在不自己进行变量解析的情况下完成您想要的事情):
Type resolved = new TypeToken<Container<Integer>>(){}.getType(); //or get the instance in any way you already do
TypeVariable variable = Container.class.getTypeParameters()[0];
GenericTypeReflector.getTypeParameter(resolved, variable); //Gets you Integer
披露:我是 GeAnTyRef 库的维护者
关于java - 如何检索泛型类型的类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42675421/