反射:框架設計靈魂安全
框架:半成品軟件,能夠在框架基礎上進行軟件開發,簡化編碼框架
反射:將類的各個組成部分封裝我其餘對象,這就是反射機制編碼
好處:spa
1.能夠在程序運行過程當中,操做這些對象設計
2.能夠解耦,提升程序的可擴展性code
獲取Class對象的方式:對象
1.Class.forName(「全類名」);將字節碼文件加載進內存,返回Class對象 (多用於配置文件將類名定義在配置文件中,讀取文件加載類)內存
2.類名.Class;經過類名的屬性.class獲取(多用於參數傳遞) 開發
3.對象.getClass();getClass()方法在Object類中定義着( 多用於對象的獲取字節碼的一個方式)get
結論:
同一個字節碼文件(*.class)在程序巡行的過程當中,只會被加載一次,不論經過那一種方式獲取Class對象都是同一個。
Class對象的功能:
獲取功能:
1.獲取成員變量們:
Field[]getFields() :獲取全部public修飾的成員變量
Field
getField(
String name) :
獲取指定名稱的 public修飾的成員變量
FieId[ ] getDeclaredFieIds()獲取全部成員變量,不考慮修飾符
FileId getDeclaredFieId(String name);
2.獲取構造方法們:
Constructor<?>[ ] getConstructors()
Constructor<T> getConstructor(類<?>… parameterTypes)
Constructor<T> getDeclaredConstructor(類<?>… parameterTypes)
Constructor<?>[ ] getDeclaredConstructors();
3.獲取成員方法們
Method[ ] getMethod()
Method getMethod(String name,類<?>… parameterType)
Method[ ] getDeclaredMethod()
Method getDeclaredMethod(String name,類<?>… parameterType)
4.獲取類名
String getNmae();
Field:成員變量
操做:
1.設置值
void set(Object obj,Object value);
2.獲取值
get(Object obj)
3.忽略訪問權限修飾符的安全檢查
setAccessible(true):暴力反射
Constructor:構造方法
建立對象:
newInstance(Object… initargs)
若是使用空參數構造方法建立對象,操做能夠簡化Class對象的newInstance方法