反射是什么呢飘千?當我們的程序在運行時,需要動態(tài)的加載一些類這些類可能之前用不到所以不用加載到jvm栈雳,而是在運行時根據(jù)需要才加載护奈,這樣的好處對于服務器來說不言而喻,舉個例子我們的項目底層有時是用mysql哥纫,有時用oracle霉旗,需要動態(tài)地根據(jù)實際情況加載驅(qū)動類,這個時候反射就有用了蛀骇,假設(shè) com.java.dbtest.myqlConnection厌秒,com.java.dbtest.oracleConnection這兩個類我們要用,這時候我們的程序就寫得比較動態(tài)化松靡,通過Class tc = Class.forName("com.java.dbtest.TestConnection");
通過類的全類名讓jvm在服務器中找到并加載這個類简僧,而如果是oracle則傳入的參數(shù)就變成另一個了。這時候就可以看到反射的好處了雕欺,這個動態(tài)性就體現(xiàn)出java的特性了岛马!
舉個個例子棉姐,大家如果接觸過spring,會發(fā)現(xiàn)當你配置各種各樣的bean時啦逆,是以配置文件的形式配置的伞矩,你需要用到哪些bean就配哪些,spring容器就會根據(jù)你的需求去動態(tài)加載夏志,你的程序就能健壯地運行乃坤。
使用反射的好處:
1.提高代碼的靈活性
2.屏蔽掉實現(xiàn)的細節(jié),讓使用者更加方便好用