java.lang.Class.forName(String name, boolean initialize, ClassLoader loader)方法範例


java.lang.Class.forName(String name, boolean initialize, ClassLoader loader) 方法返回的類或介面與給定的字串名稱相關聯的Class物件,使用給定的類載入器。

指定的類載入器載入的類或介面。如果引數載入器為null,類是通過引導類載入器載入。類的初始化僅當初始化引數為true,如果它沒有被早期初始化。

宣告

以下是java.lang.Class.forName()方法的宣告

public static Class<?> forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException

引數

  • name -- 這是希望的類的完全限定名。

  • initialize -- 這顯示了類是否必須被初始化。

  • loader -- 這是類裝載器從哪個類必須被載入。

返回值

此方法返回一個代表所需的類的Class物件。

異常

  • LinkageError -- 如果聯動失敗。

  • ExceptionInInitializerError -- 如果用這種方法引起的初始化失敗。

  • ClassNotFoundException -- 如果類不能位於由指定的類載入器。

例子

下面的例子顯示java.lang.Class.forName()方法的使用。

package com.yiibai;

import java.lang.*;

public class ClassDemo {

   public static void main(String[] args) {

     try {
        Class cls = Class.forName("ClassDemo");

        // returns the ClassLoader object
        ClassLoader cLoader = cls.getClassLoader();
       
        /* returns the Class object associated with the class or interface 
        with the given string name, using the given classloader. */
        Class cls2 = Class.forName("java.lang.Thread", true, cLoader);       
          
        // returns the name of the class
        System.out.println("Class = " + cls.getName());
        System.out.println("Class = " + cls2.getName()); 
     }
     catch(ClassNotFoundException ex) {
        System.out.println(ex.toString());
     }
   }
}

讓我們來編譯和執行上面的程式,這將產生以下結果:

Class = ClassDemo
Class = java.lang.Thread