java - 获取 Java 类中通用字段的类型

标签 java generics reflection

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/

相关文章:

java - JTextField 的值更改监听器

java - 如何解决这个 java 泛型过度使用或误用

java - 实例化/从枚举返回时类型安全的接口(interface) (Java)

c# - 为什么可以在 C# 中使用反射读取放置在 const 上的属性?

java - 动态对象的反射方法调用

java - ScheduledExecutorService,如何在不停止执行者的情况下停止 Action ?

java - 在 GridPane 上绘制的线不会显示

java - Servlet 3.0 Spring Java 配置 JNDI

java - 如何使用泛型实例化 java 中的类实例?

javascript - 如何从 JavaScript 调用通用 WebAPI 操作?