Java 泛型类型识别

标签 java generics

这是我的类(class)结构。

public class Node<T> {
    private T value;

    public Node(T val) {
        this.value = val;
    }

    public T evaluate() {
         return value;
    };

}

T 可以是IntegerDoubleDateLongString .

现在,无论如何我都可以确切地知道 T 是什么类型?谢谢。

最佳答案

您可以那个通用变量调用getClass() 方法并找出类。泛型基本上在运行时被清除,因此无界泛型不过是java.lang.Object。因此,您可以在该通用变量上调用 Object 类支持的所有方法

在运行时,泛型对象上的getClass() 将返回用于替换泛型的实际

例如

public class Node<T> {
    private T value;

    public Node(T val) {
        Class<?> clazz = val.getClass();
        checkType(clazz);
        this.value = val;
    }

    public T evaluate() {
         return value;
    };

    private void checkType(Class<?> c) {
       if(c.getName().equals(Integer.class.getName())) {
        //...
       }
    }

}

关于Java 泛型类型识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18607029/

相关文章:

Java使对象立即出现

java - 结合深度泛型集合

TypeScript:是否可以获取泛型函数的返回类型?

java - 为什么通配符类型参数不在自引用类型的包装器的范围内

swift - 使用泛型组合 2 个独立的几乎相同的函数

java - 当运行 hadoop fs -ls 结果是 "ls: Call From java.net.UnknownHostException: ubuntu: ubuntu: unknown error to localhost:9000...."

java - HTTP 请求后在单独的线程上更改渲染屏幕

java - 在编写实际代码之前在测试驱动开发中编写 junits?

java - 对 Java Web 服务框架的建议

C# 试图简化通用类型化接口(interface)的通用扩展函数