1. 程式人生 > >java 反射機制 之 getMethods獲取所有公有方法 和 getDeclaredMethods 獲取本類所有方法

java 反射機制 之 getMethods獲取所有公有方法 和 getDeclaredMethods 獲取本類所有方法

檔案結構:


Person:

package demo2;
public class Person {

    private int age;
    private String name;

    public Person( String name,int age) {
        this.age = age;
        this.name = name;
        System.out.println("建構函式Person(有引數)執行");
    }

    public Person() {
        System.out.println("建構函式Person(無引數)執行");
    }


    //公有 有參方法
    public void public_show(String str,int i)
    {
        System.out.println("public show "+str+"..."+i);
    }
    //公有 無參方法
    public void public_prin()
    {
        System.out.println("public prin");
    }


    //私有 有參方法
    private void private_show(String str,int i)
    {
        System.out.println("private show "+str+"..."+i);
    }
    //私有 無參方法
    private void private_prin()
    {
        System.out.println("private prin");
    }

}

Main:
package Main;
import java.lang.reflect.Method;

public class Main {
    public static void main(String[] args)  throws Exception {

        //獲取位元組碼檔案中 方法

        String classname = "demo2.Person";
        //尋找名稱的類檔案,載入進記憶體 產生class物件
        Class cl = Class.forName(classname);


        //1.獲取所有公有方法的getMethods()
        Method[] publie_Method=cl.getMethods(); //獲取所有公有方法
        System.out.println("Person所有公有方法:");
        for(Method m:publie_Method)
        {
            System.out.println(m);
        }


        //2.獲取本類中的所有的方法(私有 公共 保護)
        Method[] all_Method=cl.getDeclaredMethods();//獲取本類中的所有方法 (只拿本類中的)
        System.out.println("Person本類中的所有方法:");
        for(Method m:all_Method)
        {
            System.out.println(m);
        }



    }
}
執行結果: