如何获得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