java.lang.Class.forName(String name, boolean initialize, ClassLoader loader)%uA0方法返回的类或接口与给定的字符串名称相关联的Class对象,使用给定的类加载器。
指定的类加载器加载的类或接口。如果参数加载器为null,类是通过引导类加载器加载。类的初始化仅当初始化参数为true,如果它没有被早期初始化。
声明
以下是java.lang.Class.forName()方法的声明
public static Class<?> forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException
参数
-
name%uA0-- 这是希望的类的完全限定名。
-
initialize%uA0-- 这显示了类是否必须被初始化。
-
loader%uA0-- 这是类装载器从哪个类必须被加载。
返回值
此方法返回一个代表所需的类的Class对象。
异常
-
LinkageError%uA0-- 如果联动失败。
-
ExceptionInInitializerError%uA0-- 如果用这种方法引起的初始化失败。
-
ClassNotFoundException%uA0-- 如果类不能位于由指定的类加载器。
例子
下面的例子显示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