如何获得泛型类型的“真实”类?获得“真实”类的泛型类型
例如:
public class MyClass<T> {
public void method(){
//something
System.out.println(T.class) //causes a compile error, I wont the class name
//something
}
}
如果T =整数
输出:
java.lang.Integer
如果T =字符串
输出:
java.lang.String
谢谢
你可以通过反思得到这个。但是,请记住,如果您必须根据其泛型类型对数据进行不同的处理,那么您做错了。你不应该。如果你确实需要,它不像你想象的那么通用,这意味着你的班级有问题。 – corsiKa 2011-04-26 01:58:27
@glowcoder:这可能是有效的,我已经运行到自己的一个示例是访问泛型类型的静态属性。一种解决方法是定义一个你永远不会真正使用的实例,比如'T obj;',所以你稍后可以说'obj.static_property'。此外,你可以做'((T)null).static_property'。 – mellamokb 2011-04-26 02:04:08
如果您有该类型的对象,则可以在该对象上调用getClass方法。不知道这是否有帮助。 – 2011-04-26 02:04:13