Java反射
有什麼作用?
一句話概括就是使用反射可以賦予jvm動态編譯的能力
否則類的中繼資料資訊隻能用靜态編譯的方式實作,例如熱加載,Tomcat的classloader等等都沒法支援
我們為什麼要使用反射?
靜态編譯:在編譯時确定類型,綁定對象即通過。
動态編譯:運作時确定類型,綁定對象。動态編譯最大限度地發揮了Java的靈活性,
展現了多态的應用,可以減低類之間的耦合性。
我們可以明确的看出動态編譯的好處,而反射就是運用了動态編譯建立對象。
當我們的程式在運作時,需要動态的加載一些類這些類可能之前用不到是以不用加載到jvm,
而是在運作時根據需要才加載,
反射的用途:
- 擷取類、類的構造方法、成員變量、成員方法、Mian方法、
-
通過反射運作配置檔案内容
運用反射。我們可以相應的增加一個配置檔案,在裡面記錄包中所有的類名,
包中類增加時就加一個類名,删除時就删除一個類名。
讓main方法去讀取這個配置檔案中的類名,通過反射獲得執行個體,完全不用我們去修改main方法中的代碼
- 反射方法的其它使用之—通過反射越過泛型檢查
SSM架構使用反射的地方:
比如spring xml配置的bean-->轉化為對象
mybatis的resultMap映射等等
2.什麼是成員變量、局部變量、靜态變量
成員變量随着對象的建立而存在,随着對象被回收而釋放。
靜态變量随着類的加載而存在,随着類的消失而消失。
成員變量存儲在堆記憶體的對象中,是以也叫對象的特有資料。
靜态變量資料存儲在方法區(共享資料區)的靜态區,是以也叫對象的共享資料
同時Java的方法又可以分為,成員方法(普通方法)、全局方法(static)、構造方法