版权声明:本文为博主原创文章,未经博主允许不得转载。http://mp.blog.csdn.net/configure#i https://blog.csdn.net/wangming520liwei/article/details/83539944
getSuperclass 返回直接继承的父类(由于编译擦除,没有显示泛型参数)
getGenericSuperclass 返回直接继承的父类(包含泛型参数)
package cpcn.payment.shwealthbank401.api.domain;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Shwb4702Response shwb4702Response = new Shwb4702Response();
System.out.println("Student.class.getSuperclass().getSuperclass()\t"
+ shwb4702Response.getClass().getSuperclass().getSuperclass());
System.out.println("Student.class.getGenericSuperclass()\t"
+ shwb4702Response.getClass().getGenericSuperclass());
Method setResultCode = null;
try {
setResultCode = shwb4702Response.getClass().getSuperclass().getDeclaredMethod("setResponseCode", String.class);
} catch (Exception e) {
e.printStackTrace();
}
if(setResultCode == null){
setResultCode = shwb4702Response.getClass().getSuperclass().getSuperclass().getDeclaredMethod("setResponseCode", String.class);
}
if(setResultCode != null){
setResultCode.invoke(shwb4702Response, "ni hao");
}else{
}
System.out.println(shwb4702Response.getResponseCode());
}
}
Student.class.getSuperclass().getSuperclass() class cpcn.payment.tools.base.rpc.TxResponse
Student.class.getGenericSuperclass() class cpcn.payment.shwealthbank401.api.domain.TxResponseBase
java.lang.NoSuchMethodException: cpcn.payment.shwealthbank401.api.domain.TxResponseBase.setResponseCode(java.lang.String)
at java.lang.Class.getDeclaredMethod(Class.java:2130)
at cpcn.payment.shwealthbank401.api.domain.Test.main(Test.java:17)
ni hao
package cpcn.payment.shwealthbank401.api.domain;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Shwb4702Response shwb4702Response = new Shwb4702Response();
System.out.println("Student.class.getSuperclass().getSuperclass()\t"
+ shwb4702Response.getClass().getSuperclass().getSuperclass());
System.out.println("Student.class.getGenericSuperclass()\t"
+ shwb4702Response.getClass().getGenericSuperclass());
Method setResultCode = null;
try {
setResultCode = shwb4702Response.getClass().getMethod("setResponseCode", String.class);
// getDeclaredMethod("setResponseCode", String.class);
} catch (Exception e) {
e.printStackTrace();
}
// if(setResultCode == null){
// setResultCode = shwb4702Response.getClass().getSuperclass().getSuperclass().getDeclaredMethod("setResponseCode", String.class);
// }
if(setResultCode != null){
setResultCode.invoke(shwb4702Response, "ni hao");
}else{
}
System.out.println(shwb4702Response.getResponseCode());
}
}