Java 筆記之Class.forName與classloader

來源:互聯網
上載者:User

標籤:代碼   init   需要   throws   nbsp   執行   classname   stat   常量池   

   Class.forName返回的Class對象可以決定是否初始化。而ClassLoader.loadClass返回的類型絕對不會初始化,最多隻會做串連操作。
   Class.forName可以決定由哪個classLoader來請求這個類型。而ClassLoader.loadClass是用當前的classLoader去請求。

  JDBC的註冊驅動基本都採用Class.forName。

   public static Class<?> forName(String name, boolean initialize,ClassLoader loader) throws ClassNotFoundException;  
   public static Class<?> forName(String className)throws ClassNotFoundException;
  註:initialize:如果為true,則會在返回Class對象之前,對該類型做串連,校正,初始化操作。(如:執行static塊中的代碼)
        loader:用自訂的類載入器來請求這個類型;當然,你也可以傳入null,用bootstrap載入器。

protected synchronized Class<?> loadClass(String name, boolean resolve)throws ClassNotFoundException;   
public Class<?> loadClass(String name) throws ClassNotFoundException;

註:resolve:表示是否需要串連該類型,裡麵包括校正class檔案,準備分配記憶體,類型常量池的替換,但是並不會初始化該類型。

Java 筆記之Class.forName與classloader

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.