1. 程式人生 > 其它 >關於java反射機制建立Class物件、建立例項物件,呼叫方法

關於java反射機制建立Class物件、建立例項物件,呼叫方法

技術標籤:知識積累java反射

關於java反射機制建立Class物件、建立例項物件,呼叫方法
通過反射機制建立Class物件使用最多的方法就是通過Class.forName返回Class物件,因為這種方法需要傳遞的引數是一個字串,字串可以寫入配置檔案,方便修改。
通過類地址建立Class物件
Class c = Class.forName(“com.liheng.business.text.Text”);
根據傳入引數獲取對應構造方法物件(直接呼叫newInstance方法只能建立無參構造)
Constructor c1 = c.getConstructor(int.class,String.class);

建立例項物件
Object c2 = c1.newInstance(1,“s”);
獲取方法物件
Method prMethod = c.getDeclaredMethod(“pr”,String.class,String.class,String.class);
呼叫函式
Object obj = prMethod.invoke(c2,“hello”," ",“word”);

//建立Class物件,傳入的字串為要反射的物件的完整名稱,即加上了所有包名的名字
 		Class c = Class.forName("com.liheng.business.text.Text"
); //通過class物件獲取物件的構造方法,傳入的引數數量和型別取決於要獲取的構造方法 Constructor c1 = c.getConstructor(int.class,String.class); //通過構造方法建立例項物件 Object c2 = c1.newInstance(1,"s"); //通過Class物件來獲取物件中的方法,傳入的第一引數是獲取的方法的名字,後面的引數是想要獲取的方法的數量及型別 Method prMethod = c.getDeclaredMethod("pr"
,String.class,String.class,String.class); //使用方法物件呼叫函式,完成呼叫方法,第一個引數是此方法的例項物件,後面的引數是呼叫此方法需要傳入的實參,返回值是Object型別 Object obj = prMethod.invoke(c2,"hello"," ","word"); System.out.println(obj);
		/**
		 * 建立一個Text類作為反射機制的練習
		 * Text類有一個int型別的引數和一個String型別的引數
		 * 一個pr方法,形參是三個String型別的,返回值是String的
		 */
		public class Text {
		    private int i;
		    private String j;
		
		    public Text(int i,String j) {
		        this.i = i;
		        this.j = j;
		    }
		
		    public Text() {
		    }
		
		    public String pr(String a, String b, String c){
		        System.out.println(a + b + c);
		        return a + b + c;
		    }
		}

輸出結果中第一個是呼叫方法輸出,第二個是輸出的返回結果
執行結果