Class.forName调用时会加载对应类

//20201224
今天学习java类的反射机制的时候,讲到了forName()方法会加载类,在此记录一下细节

forName调用时发生了什么

  • 会加载类,如果类中有静态代码块,则会执行其内代码,但不会执行无参构造内部代码
  • 举例(类代码&调用forName代码):
//类
package testPackage;

public class User {
    static{
        System.out.println("User class has been load!");
    }

    public User(){
        System.out.println("constructor has been quote");
    }
}
/**
 * ===============================
 */
public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("src/reflection/classinfo.properties");
        Properties pro =  new Properties();
        pro.load(fr);
        fr.close();
        String mm = pro.getProperty("className");
//        System.out.println(mm);
        Class test = Class.forName(mm);
        User ss = new User();
    }
  • 配置文件内容(学习的时候顺便练了一下配置文件的读取)
className=testPackage.User
  • 执行输出如下:

img "执行输出"

以上
希望对大家有所帮助

posted @ 2020-12-24 20:18  醉生梦死_0423  阅读(217)  评论(0编辑  收藏  举报