class A<Type>{
private Type id;
}
class B extends A<String>{
}
B b = new B();
Field idField = //reflection code to get id field
如何从“idField”中获取 idField 的确切类型,即 String 而不是 Type ?
最佳答案
我不太确定您想要实现什么目标。 但我猜您想确定字段“id”的具体类型。
public class A<T>{
public T id;
public Class<T> idType;
public A(){
idType = (Class<T>)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
}
public class B extends A<String>{
}
public static void main(String[] args) throws Exception {
B b = new B();
System.out.println(b.idType);
}
上述代码片段中的最后一个 sysout 语句将打印“java.lang.String”。
这是在基类中编写通用功能时非常常用的技术。
关于java - 获取 Java 类中通用字段的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006113/