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

时间:2023-01-03 19:19:44

描述

Java.lang.Class.forName(String name, boolean initialize, ClassLoader loader) 方法返回与给定字符串名的类或接口的Class对象,使用给定的类加载器。

指定的类加载器加载的类或接口。如果该参数加载器loader 为空,通过引导类加载器加载类。当类被初始化的初始化initialize参数为true,如果它没有被初始化。

声明

以下是java.lang.Class.forName()方法的声明

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

参数

  • name -- 这是所需类的完全限定名称。

  • initialize -- 这说明这个类是否必须初始化。

  • loader -- 这是必须加载的类的类加载器。

返回值

此方法返回所需的类的类对象。

异常

  • LinkageError -- 如果联动失败。

  • ExceptionInInitializerError -- 如果这种方法所引发的初始化失败。

  • ClassNotFoundException -- 如果类不能位于由指定的类加载器。

实例

下面的例子说明了如何使用java.lang.Class.forName()方法。

  1. import java.lang.*;
  2. public class ClassDemo {
  3. public static void main(String[] args) {
  4. try {
  5. Class cls = Class.forName("ClassDemo");
  6. // returns the ClassLoader object
  7. ClassLoader cLoader = cls.getClassLoader();
  8. /* returns the Class object associated with the class or interface
  9. with the given string name, using the given classloader. */
  10. Class cls2 = Class.forName("java.lang.Thread", true, cLoader);
  11. // returns the name of the class
  12. System.out.println("Class = " + cls.getName());
  13. System.out.println("Class = " + cls2.getName());
  14. }
  15. catch(ClassNotFoundException ex) {
  16. System.out.println(ex.toString());
  17. }
  18. }
  19. }

让我们来编译和运行上面的程序,这将产生以下结果:

  1. Class = ClassDemo
  2. Class = java.lang.Thread