Java.lang.Class.forName() 方法

描述

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

指定的类加载器用于加载类或接口。 如果参数 loader 为 null,则通过引导类加载器加载该类。 仅当 initialize 参数为真并且之前没有初始化该类时才初始化该类。


声明

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

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

参数

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

  • initialize − 这表明该类是否必须被初始化。

  • loader − 这是必须从中加载类的类加载器。


返回值

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


异常

  • LinkageError − 如果链接失败。

  • ExceptionInInitializerError − 如果此方法引发的初始化失败。

  • ClassNotFoundException − 如果指定的类加载器无法找到该类。


示例

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

package com.tutorialspoint;

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