Java Class forName(String, boolean, ClassLoader)方法及示例

Java Class forName(String, boolean, ClassLoader)方法及示例

java.lang.Class类forName(String, boolean, ClassLoader) 方法用于使用指定的类加载器获得具有指定类名的该类的实例。只有在initialize参数为真,并且没有被提前初始化的情况下,该类才会被初始化。

语法:

public static Class<T>
 forName(String className, 
         boolean initialize, 
         ClassLoader classLoader) 
 throws ClassNotFoundException

参数: 该方法接受以下参数:

  • className ,这是一个需要实例的类。
  • initialize 是一个布尔值,说明这个类的实例是否需要被初始化。
  • classLoader ,它是该类必须被加载的ClassLoader。

返回值: 该方法返回使用指定参数获取的该类的实例。

异常: 该方法抛出以下异常:

  • LinkageError: 如果链接失败
  • ExceptionInInitializerError: 如果这个方法引发的初始化失败。
  • ClassNotFoundException: 如果无法找到该类。
  • SecurityException: 如果存在安全管理器,并且加载器为空,而调用者的类加载器不为空,并且调用者没有RuntimePermission(“getClassLoader”)。

下面的程序演示了forName()方法。
示例1:

// Java program to demonstrate forName() method
 
public class Test {
    public static void main(String[] args)
        throws ClassNotFoundException
    {
 
        // returns the Class object for this class
        Class myClass = Class.forName("Test");
 
        ClassLoader loader = myClass.getClassLoader();
 
        // get the Class instance using forName method
        Class c1
            = Class.forName("java.lang.String",
                            true,
                            loader);
 
        System.out.print("Class represented by c1: "
                         + c1.toString());
    }
}

输出

Class represented by c1: class java.lang.String

例2:

// Java program to demonstrate forName() method
 
public class Test {
    public static void main(String[] args)
        throws ClassNotFoundException
    {
 
        // returns the Class object for this class
        Class myClass = Class.forName("Test");
 
        ClassLoader loader = myClass.getClassLoader();
 
        // get the Class instance using forName method
        Class c1
            = Class.forName("java.lang.Integer",
                            false,
                            loader);
 
        System.out.print("Class represented by c1: "
                         + c1.toString());
    }
}

输出

Class represented by c1: class java.lang.Integer

参考资料: https://docs.oracle.com/javase/9/docs/api/java/lang/Class.html#forName-java.lang.String-boolean-java.lang.ClassLoader-

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程