反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性,這種動態(tài)獲取的信息以及動態(tài)調用對象的方法的功能稱為java語言的反射機制。一直以來反射技術都是Java中的閃亮點,這也是目前大部分框架(如Spring/Mybatis等)得以實現的支柱。在Java中,Class類與java.lang.reflect類庫一起對反射技術進行了全力的支持。在反射包中,我們常用的類主要有Constructor類表示的是Class 對象所表示的類的構造方法,利用它可以在運行時動態(tài)創(chuàng)建對象、Field表示Class對象所表示的類的成員變量,通過它可以在運行時動態(tài)修改成員變量的屬性值(包含private)、Method表示Class對象所表示的類的成員方法,通過它可以動態(tài)調用對象的方法(包含private)。
-
Constructor類存在于反射包(java.lang.reflect)中,反映的是Class對象所表示的類的構造方法。獲取Constructor對象是通過Class類中的方法獲取的。 -
Field提供有關類或接口的單個字段的信息,以及對它的動態(tài)訪問權限。反射的字段可能是一個類(靜態(tài))字段或實例字段。同樣的道理,我們可以通過Class類的提供的方法來獲取代表字段信息的Field對象。 -
Method提供關于類或接口上單獨某個方法(以及如何訪問該方法)的信息,所反映的方法可能是類方法或實例方法(包括抽象方法)。