反射定義:java
程序能夠訪問,檢測和修改它自己狀態或行爲的一種能力,並能根據自身行爲的狀態和結果,調整或修改應用所描述行爲的狀態和相關的語義。一個類有多個組成部分,例如:成員變量、方法、構造方法等,反射就是加載類,並解剖出類的各個組成部分。安全
功能做用:性能
使用步驟:代理
導入java.lang.relfect包對象
三個步驟get
第一步,是得到你想操做的類的java.lang.Class對象編譯
第二步,是調用諸如getDeclaredMethods的方法class
第三步,使用反射API來操做這些信息變量
得到Class對象的方法擴展
一、若是一個類的實例已經獲得,你可使用
Class c =對象.getClass()
二、若是你在編譯期知道類的名字,你可使用以下的方法
Class c = java.awt.Button.class
三、若是類名在編譯期不知道,可是在運行期能夠得到,你可使用下面的方法
Class c = Class.forName(str)
反射優勢:
(1)可以運行時動態獲取類的實例,大大提升系統的靈活性和擴展性。
(2)與Java動態編譯相結合,能夠實現無比強大的功能
反射缺點: (1)使用反射的性能較低 (2)使用反射相對來講不安全 (3)破壞了類的封裝性,能夠經過反射獲取這個類的私有方法和屬性