JAVA中的反射無處不在,不僅在jdk中存在,還在諸如spring,mybatis,設計模式等中廣泛使用!

首先要知道的是,JAVA可以算做編譯型語言,大多數的類,方法都在編譯時已經明確,這顯然不能滿足于我們所有的需求,使用反射就可以在運行時動態加載,通過類可以構造對象,準確的知道它的屬性,方法等全部信息!
 

如何理解java中的反射?

JAVA中的反射方式有以下幾種:

①Class.forName(“類全路徑”);

②對象名.getClass

③基本類型的包裝類:Boolean.TYPE,Integer.TYPE等!

反射的作用有:

1,可以在運行時動態獲得對象,

2,在運行時動態獲取一個類的構造器,方法,變量,注解等!

3,實現動態代理。

反射的缺點:因為是在運行時獲取,沒有JAVA的預編譯,在運行時性能存在問題!

反射的實際使用場景:

1,spring中實例化對象的時候如果都用new來創建對象,那將會十分繁瑣,而且加入新類型的時候也需要重新new,spring的做法是讓這些所有對象繼承自beanDefinition,這樣在實例化的時候,只要傳入父類和子類類型即可!

2,動態代理:spring aop中的注釋模式就是用了動態代理,比如JdkDynamicAopProxy

如何理解java中的反射?

反射在實際開發中也是體現一個開發人員水平高低的參考,要讓這種思想深深烙入心里,在實際開發中解決很多后期擴展困難的問題!