我有下面的类结构的泛型类字段类型:获得与Java思考
public class GenClass<T> {
public T elem;
}
我使用的方式如下:
public class Test {
public GenClass<UUID> data;
现在我想ELEM类型使用数据的字段对象(Test.class.getField("data")
) 但是,当我使用getType
检索类时,通用信息被剥离。
如何将通用信息从getGenericType
映射到类对象以检索具有正确类型的字段?
编辑︰由于有一些误解,我试图澄清我的问题。 考虑这个例子:
public class AClass<T, Q> {
public Q elem;
// some other code using T...
}
public class BClass<T, Q> {
public T elem;
// some other code using Q...
}
现在我想一个函数来获取类ELEM的:
public class Test {
public AClass<UUID, String> a;
public BClass<Integer, Float> b;
void do() throws Exception {
Field aField = Test.class.getField("a");
Field bField = Test.class.getField("b");
getType(aField, "elem"); // should return String.class
getType(bField, "elem"); // should return Integer.class
}
Class<?> getType(Field f, String classField) {
// ???
}
}
我怎么需要实现getType
得到我想要的结果?
检查http://stackoverflow.com/questions/1901164/get-type-of-a-generic-parameter-in-java-with-reflection – user2953113
但我不知道,该字段的实际类型参数中的哪一个用于elem。也许我有一个像AClass这样的课程,然后声明'B数据'。我怎么知道,数据是第三种类型的论点? –
darkbit