Java – gets the generic type of the “real” class

How do I get a "real" class of a generic type?

For example:

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

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

        //something
    }
}

If t = integer

Output:

java.lang.Integer

If t = string

Output:

java.lang.String

thank you

Solution

If you have an instance variable of type T in your class and it happens to be set, you can print the class of the variable

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;
    }
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>