如何获得generics的类

Class Model{ private T t; ..... private void someMethod(){ //now t is null Class c = t.getClass(); } ..... } 

当然它会引发NPE。

 Class c = t.getClass(); 

如果我的实例为null,我应该使用什么语法来获取T的类? 可能吗?

由于类型擦除,这是不可能的。

有以下解决方法:

 class Model { private T t; private Class tag; public Model(Class tag) { this.tag = tag; } private void someMethod(){ // use tag } } 

你可以用reflection做到这一点:

 Field f = this.getClass().getField("t"); Class tc = f.getType(); 

你可以在不通过课程的情况下完成:

 class Model { Class c = (Class) DAOUtil.getTypeArguments(Model.class, this.getClass()).get(0); } 

您需要此文件中的两个function: http : //code.google.com/p/hibernate-generic-dao/source/browse/trunk/dao/src/main/java/com/googlecode/genericdao/dao/DAOUtil。 java的

有关更多说明,请访问: http : //www.artima.com/weblogs/viewpost.jsp? thread = 208860