getSupperClass()和getGenericSuperclass()

版权声明:本文为博主原创文章,未经博主允许不得转载。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());
        
    }

}


猜你喜欢

转载自blog.csdn.net/wangming520liwei/article/details/83539944