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