java反射——建構函式
阿新 • • 發佈:2018-12-22
反射獲取建構函式並呼叫。說再多不入程式碼來的快。我把程式碼分成了一塊塊程式碼區,需要看一個註釋其他的就可以了,測試過都是可以的!
package FanShe; import java.lang.reflect.*; class Student { //---------------構造方法------------------- //(預設的構造方法) Student(String str){ System.out.println("(預設)的構造方法 s = " + str); } //無參構造方法 public Student(){ System.out.println("呼叫了公有、無參構造方法執行了。。。"); } //有一個引數的構造方法 public Student(char name){ System.out.println("姓名:" + name); } //有多個引數的構造方法 public Student(String name ,int age){ System.out.println("姓名:"+name+"年齡:"+ age);//這的執行效率有問題,以後解決。 } //受保護的構造方法 protected Student(boolean n){ System.out.println("受保護的構造方法 n = " + n); } //私有構造方法 private Student(int age){ System.out.println("私有的構造方法 年齡:"+ age); } } public class ConstructorDemo { public static void main(String[] args) throws Exception { // Class c=new Student().getClass(); Class c=Student.class; // Class c=Class.forName("FanShe.Contructor"); //三種方法能獲取學生類Class物件 /*System.out.println("*****獲取公有構造方法*****"); Constructor[] cArr=c.getConstructors(); for(Constructor con:cArr) { System.out.println(cor); }*/ /*System.out.println("*****獲取全部構造方法*****"); Constructor[] cArr=c.getDeclaredConstructors(); for(Constructor con:cArr) { System.out.println(con); }*/ /*System.out.println("*****獲取公有無參構造方法*****"); Constructor con=c.getConstructor(); System.out.println(con);*/ /*System.out.println("*****獲取指定引數構造方法*****"); Constructor con=c.getDeclaredConstructor(String.class); System.out.println(con);*/ /*System.out.println("*****暴力訪問,建立物件*****"); Constructor con=c.getDeclaredConstructor(String.class); con.setAccessible(true);//暴力訪問 Object obj=con.newInstance("傅靖耀");//new Student("傅")*/ } }