获得通用类型的"真实"类

Die*_*o D 14 java generics

如何获得泛型类型的"真实"类?

例如:

public class MyClass<T> {
    public void method(){
        //something

        System.out.println(T.class) //causes a compile error, I wont the class name

        //something
    }
}
Run Code Online (Sandbox Code Playgroud)

如果T =整数

输出:

java.lang.Integer
Run Code Online (Sandbox Code Playgroud)

如果T = String

输出:

java.lang.String
Run Code Online (Sandbox Code Playgroud)

谢谢

Kal*_*Kal 22

如果你的类中有一个类型为T的实例变量,并且碰巧设置了它,那么你可以打印该变量的类.

public class Test<T> {

    T var;

    public static void main(String[] args) {
        Test<Integer> a = new Test<Integer>();
        System.out.println(a.boo());
        a.setVar(new Integer(10));
        System.out.println(a.boo());
    }

    public String boo() {
        if (var == null) {
            return "Don't know yet";
        }
        return var.getClass().getSimpleName();
    }

    public void setVar(T var) {
        this.var = var;
    }

    public T getVar() {
        return var;
    }
}
Run Code Online (Sandbox Code Playgroud)


Hov*_*els 12

你不能.在编译时从代码中剥离信息,这个过程称为类型擦除.有关更多信息,请查看此处:类型擦除

编辑:对不起我的错,信息没有在运行时加载.