反射的思想,在Java框架內被廣泛運用。反射的思想源于物理學中光學的反射概念。在Java內又是另一種概念。平時,我們照鏡子的時候,鏡子內部都會顯示出我們的影子,Java內也不例外。一個類或者是對象的反射,應當獲取自身的對象,該對象是一個java.lang.Class類的對象(一個鏡像文件)。
一個類或對象獲得自身Class對象的過程叫做反射。 有兩種對象可以活著自身的Class對象(對每一個被裝載的類型(類或接口),JVM虛擬機都會為它創建一個java.lang.Class實例):
1)Class c = Class.forName("com.us.demo.Student");//虛擬機中沒有該類的Class的實例對象2)Class c1=stu.getClass();//虛擬機內已經存在了Class的實例對象 Class c2=this.getClass();//虛擬機內已經存在了Class的實例對象注意:類和它的所有對象通過反射獲得的class對象都是同一個,在這個例子里面時com.us.demo.Student。
反射機制可以讓我們利用這個Class對象來獲取和修改私有方法,不通過共有的方法所得。(原來我們例子都是通過一個public的方法來設置和獲取私有的變量,可以破壞數據的封裝性。)
常見的反射方法,通常可以做如下幾個作用:
可以創建對象;可以訪問對象中的屬性;可以訪問對象內的方法;可以訪問對象內的構造器。示例程序:
http://www.cnblogs.com/lzq198754/p/5780331.html反射機制通過在運行時探查字段和方法,從而可以幫助我們可以寫出通用性很好的方法。但是這項能力對于系統編程非常有用,通常是運用在編程中間件內。但是,它不適合編寫應用程序,反射是脆弱的(它不能幫你發現編譯錯誤,任何錯誤在運行時都會導致異常)。
新聞熱點
疑難解答