在类中使用ParameterizedType获取类的实体类的泛式类有以下代码:publicclassDemo{ privateClassclazz; publicTgetDemo()throwsInstantiationException,IllegalAccessException{returnclazz.newInstance();}publicstaticvoidtest()throwsInstantiationException,IllegalAccessException{Stringstr=newDemo().getDemo(); }}现在我要调用test()方法,获取一个String实体类,但当我调用的时候会抛出NullPointerException指clazz为空值,无法调用。那么这时候我改一下getDemo方法,使用ParameterizedType获取泛式并且赋值publicTgetDemo()throwsInstantiationException,IllegalAccessException{TypesuperClass=getClass();if(superClassinstanceofParameterizedType){Typetype=((ParameterizedType)superClass).getActualTypeArguments()[0];this.clazz=(Class)type; }else{System.out.println("不相等");}returnclazz.newInstance();}但是这时候获取到的superClass为Demo,并不是Demo,因此superClassinstanceofParameterizedType不成立,控制台输出"不相等",clazz仍未null,所以想问一下大家这种情况下要怎么样才能获取到泛型的类呢? 注意就算把TypesuperClass=getClass();改为TypesuperClass=getClass().getGenericSuperclass();也是没有用的,因为Demo类不继承其他类,所以获取到的是Object,也是不相等的。
波斯汪
慕运维8079593
相关分类