Class Model<T>{
private T t;
.....
private void someMethod(){
//now t is null
Class c = t.getClass();
}
.....
}
当然它会引发NPE。
Class c = t.getClass();
如果我的实例为null,我应该使用什么语法来获取T的类? 有可能吗?
答案 0 :(得分:7)
由于类型擦除,这是不可能的。
有以下解决方法:
class Model<T> {
private T t;
private Class<T> tag;
public Model(Class<T> tag) {
this.tag = tag;
}
private void someMethod(){
// use tag
}
}
答案 1 :(得分:-1)
你可以用反射来做到这一点:
Field f = this.getClass().getField("t");
Class tc = f.getType();
答案 2 :(得分:-1)
你可以在不通过课程的情况下完成:
class Model<T> {
Class<T> c = (Class<T>) DAOUtil.getTypeArguments(Model.class, this.getClass()).get(0);
}
有关详细说明:http://www.artima.com/weblogs/viewpost.jsp?thread=208860