Java中的forName(String className)方法是用来动态加载类的,根据类名获取类的实例。其基本语法为:
Class.forName("className");
具体的步骤如下:
1.读取className指定的类的二进制文件到内存中;
2.在堆内存中创建一个Class对象,用来存放该类的相关信息;
3.在栈内存中创建一个Class类型的引用变量,指向步骤2中创建的Class对象。
该方法常用于动态地加载一些外部的、扩展的、尚未知名的类,其返回值为Class类型的对象,可以通过该对象来调用该类的方法。由于Class.forName(String className)方法是一个静态方法,所以可以通过类名来直接调用该方法。
此外,当类被加载入内存时,其静态代码块也会被执行。因此,在使用forName(String className)方法时,要注意该类中是否有静态代码块。
以下是用forName方法加载类的示例:
//示例一:动态加载JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
在使用JDBC连接MySQL数据库时,首先要加载MySQL的JDBC驱动。上述代码就是通过forName方法加载MySQL的JDBC驱动。其中,”com.mysql.jdbc.Driver”指的是MySQL数据库的JDBC驱动类名。
//示例二:动态加载自定义类
Class.forName("com.example.MyClass");
假设我们编写了一个名为MyClass的类,其在项目中的路径为com.example.MyClass,我们可以使用forName方法来动态加载该类。
注意,在使用forName方法加载类时,要保证该类在classpath中存在,否则会抛出ClassNotFoundException异常。