在類中使用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,也是不相等的。
JAVA如何在類中使用ParameterizedType獲取泛式類型
慕桂英546537
2019-05-13 12:45:25