關於Java中的反射機制

wit_stan發表於2018-08-17

定義:

       JAVA反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意方法和屬性;這種動態獲取資訊以及動態呼叫物件方法的功能稱為java語言的反射機制。

      JAVA反射(放射)機制:“程式執行時,允許改變程式結構或變數型別,這種語言稱為動態語言”。從這個觀點看,Perl,Python,Ruby是動態語言,C++,Java,C#不是動態語言。但是JAVA有著一個非常突出的動態相關機制:Reflection,用在Java身上指的是我們可以於執行時載入、探知、使用編譯期間完全未知的classes。換句話說,Java程式可以載入一個執行時才得知名稱的class,獲悉其完整構造(但不包括methods定義),並生成其物件實體、或對其fields設值、或喚起其methods。

   

     功能: 

      Java反射機制主要提供了以下功能:

       1、在執行時判斷任意一個物件所屬的類;(getClass()方法實現) 

 通過反射獲取類的三種方法     


//1、第一種方式-->Class.forName("類名字串");
		//注:類名字串是"包名+類名" 返回Class的物件。(這種是最常用的方法)
		Class c1=Class.forName("csdn.Student");
		//2、第二種方式-->先建立物件,再用物件呼叫getClass()方法,即例項物件.getClass().返回執行時類。
		//任何一個java物件都有getClass()方法
		Student s=new Student();
		Class c2 = s.getClass();
		//3、第三種方式-->類名.class。返回Class的物件。(每個類都有class屬性)
		Class c3=Student.class;

 

       2、在執行時構造任意一個類的物件;

 

  • 通過newInstance()獲取到類例項物件。

 

       3、在執行時判斷任意一個類所具有的成員變數和方法;

通過反射可以獲取到的主要描述資訊

1、獲得屬性

 

2、獲得方法:

 

3、獲得構造方法:

 

4、獲得其他資訊:

       4、在執行時呼叫任意一個物件的方法;生成動態代理。

相關文章