理解Java的Class.forName()方法


 

Class.forName() 官方文檔解釋:通俗點說就是要求JVM查找並加載指定的類,也就是說JVM會執行該類的靜態代碼段,並返回與該類相關的Class對象。

例如:加載thread類(只是先加載、初始化,並沒有實例化\new\分配內存空間)

Class t = Class.forName(“java.lang.Thread”);

 

另外需要理解的概念:

♦靜態代碼塊:

概念總結:隨着類的加載而加載,並且只執行一次,常用來執行類的初始化
作用:用於給類初始化

♦區分 new關鍵字和newInstance() 、Class.forName()的區別:

new():實例化並分配內存空間。使用關鍵字new創建一個類的時候,這個類可以沒有被加載

newInstance():實例化並分配內存空間,但是前提要求 這個類已經加載。

Class.forName()要求JVM查找並加載指定的類,也就是說JVM會執行該類的靜態代碼段,並返回與該類相關的Class對象。

 

現在可以看出,newInstance()實際上是把new這個方式分解為兩步,即首先調用Class加載方法加載某個類,然后實例化。

Class t = Class.forName(str); 
t.newInstance();

 

這樣分步的好處是顯而易見的。我們可以在調用class的靜態加載方法forName時獲得更好的靈活性,提供給了一種降耦的手段。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM