如何理解java中的反射?
JAVA中的反射無處不在,不僅在jdk中存在,還在諸如spring,mybatis,設計模式等中廣泛使用!
首先要知道的是,JAVA可以算做編譯型語言,大多數的類,方法都在編譯時已經明確,這顯然不能滿足于我們所有的需求,使用反射就可以在運行時動態加載,通過類可以構造對象,準確的知道它的屬性,方法等全部信息!

JAVA中的反射方式有以下幾種:
①Class.forName(“類全路徑”);
②對象名.getClass
③基本類型的包裝類:Boolean.TYPE,Integer.TYPE等!
反射的作用有:
1,可以在運行時動態獲得對象,
2,在運行時動態獲取一個類的構造器,方法,變量,注解等!
3,實現動態代理。
反射的缺點:因為是在運行時獲取,沒有JAVA的預編譯,在運行時性能存在問題!
反射的實際使用場景:
1,spring中實例化對象的時候如果都用new來創建對象,那將會十分繁瑣,而且加入新類型的時候也需要重新new,spring的做法是讓這些所有對象繼承自beanDefinition,這樣在實例化的時候,只要傳入父類和子類類型即可!
2,動態代理:spring aop中的注釋模式就是用了動態代理,比如JdkDynamicAopProxy


