【发布时间】:2011-04-26 01:54:21
【问题描述】:
如何获得泛型类型的“真实”类?
例如:
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
谢谢
【问题讨论】:
-
你可以通过反射得到这个。但是......请记住,如果您必须根据其通用类型来区别对待您的数据,那么您做错了。你不应该这样做。如果你必须这样做,它并不像你想象的那么通用,这意味着你的班级有问题。
-
@glowcoder:我自己遇到的一个可能有效的示例是访问泛型类型的静态属性。一种解决方法是定义一个您从未真正使用过的实例,例如
T obj;,因此您可以稍后说obj.static_property。另外,你可以((T)null).static_property。 -
如果您有该类型的对象,您可以在该对象上调用
getClass方法。不确定这是否有帮助。 -
@glow:请发布答案,以便我们投票!