1. 程式人生 > >通過反射獲取class文件中的構造方法,運行構造方法

通過反射獲取class文件中的構造方法,運行構造方法

對象 rgs span for instance .... urn his col

/*
 *  通過反射獲取class文件中的構造方法,運行構造方法
 *  運行構造方法,創建對象
 *    1、獲取class文件對象
 *    2、從class文件對象中,獲取需要的成員
 *    
 *  Constructor 描述構造方法對象類
 */

1、person類,用於測試獲取無參的構造方法

package cn.itcast.demo1;

public class Person {
    public String name;
    private int age;

    
    /*static{
        System.out.println("靜態代碼塊");
    }
*/ public Person(){ } public Person(String name,int age){ this.name = name; this.age = age; } private Person(int age,String name){ this.name = name; this.age = age; } public void eat(){ System.out.println("人吃飯"); }
public void sleep(String s, int a,double d){ System.out.println("人在睡覺"+s+"....."+a+"....."+d); } private void playGame(){ System.out.println("人在打遊戲"); } public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } public String getName() {
return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }

2、獲取無參構造方法測試類

public class ReflectDemo1 {
    public static void main(String[] args) throws Exception {
    
        Class c = Class.forName("cn.itcast.demo1.Person");
        //使用class文件對象,獲取類中的構造方法
        //  Constructor[]  getConstructors() 獲取class文件對象中的所有公共的構造方法像person類中構造方法用private修飾的是獲取不到的
        /*Constructor[] cons = c.getConstructors(); //獲取到的是多個構造方法
        for(Constructor con : cons){
            System.out.println(con);
        }*/
        //獲取指定的構造方法,空參數的構造方法
        Constructor con =  c.getConstructor();//獲取指定的構造方法
        //運行空參數構造方法,Constructor類方法 newInstance()運行獲取到的構造方法
        Object obj = con.newInstance();
        System.out.println(obj.toString());
    }
}

通過反射獲取class文件中的構造方法,運行構造方法