最近在重溫反射的知識,收穫仍是不少的,感受知識就是在不一樣的時間去看會有更深的理解數據庫
在剛學反射時不管是什麼教材或者網上的資料都在講述着反射的重要性,可是咱們學習過程當中卻歷來都用不到,相信不少朋友跟我同樣,常常會產生「反射到底有什麼用」的問題,我在重溫了反射的知識點後,終於有一點理解了反射的做用,想來跟你們分享一下我對於反射的見解。框架
1·、你們都知道反射又稱之爲動態編譯,網上關於動態編譯的解釋不少,個人理解就是代碼能夠不用那麼死板了。學習
假如說如今咱們有一個接口A,A有兩個實現類B和C,咱們在編寫代碼的過程當中若是不用反射機制,就可能要將B、C的對象建立出來,以備後用,這還只是兩個實現類,加入實現類不少怎麼辦,這時就須要反射機制了,由於反射所用代碼爲Class.forName("類的全類名"),這個類的全類名咱們就能夠經過配置文件傳入,並且是在須要時才傳入,使得代碼變得靈活起來。對象
二、框架的底層大多使用了反射,這是爲何?接口
學過框架的都知道框架基本是使用配置文件來將咱們的運行環境搭建好,這裏就是反射的經典運用,由於對於咱們的項目,各類配置(包括數據庫鏈接,各類路徑等)都是不一樣的,因此就須要反射的機制來動態的獲取。源碼
三、咱們日常會用到反射嗎?編譯
其實對於這個問題我相信大部分人都有過迷惑,由於反射除了在學習數據庫鏈接過程當中使用了一下Class.forName()之外,好像基本就沒用過了。不過請你相信反射確定是有用的,好比說對於框架底層源碼的理解等。環境搭建
總結:反射的做用很大,須要咱們去理解它,可讓咱們更好的去閱讀框架的底層代碼。配置