通過反射獲取class文件中的構造方法,運行構造方法
阿新 • • 發佈:2017-12-28
對象 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文件中的構造方法,運行構造方法