19新版教育培训风格演示站

标题: Class.forName(String,false,loader)初始化设置为false,结果还是初始化执行了静态... [打印本页]

作者: 小燕秋    时间: 2019-1-10 17:08
标题: Class.forName(String,false,loader)初始化设置为false,结果还是初始化执行了静态...
都说Class.forName(String name, boolean initialize,ClassLoader loader)方法可以选择在加载类的时候是否要对类进行初始化
可是当我设置initialize为false的时候,结果还是执行了类里面的静态代码块,是为什么呢?


  1. public class StringL {
  2.     static {
  3.         System.out.println("执行了静待代码块");
  4.     }
  5.     public static void main(String[] args){

  6.         ClassLoader loader = ClassLoader.getSystemClassLoader();
  7.         try {
  8.             Class sample3=Class.forName("StringL",false,loader);
  9.         }catch (ClassNotFoundException e){
  10.             e.printStackTrace();
  11.         }
  12.     }
  13. }
复制代码



作者: 瓦力老师    时间: 2019-1-10 17:09
可能因为你这个StringL类 包括了入口main函数,说明一开始就已经被加载了。
所以就执行了静态代码块




欢迎光临 19新版教育培训风格演示站 (http://47.100.112.22/demo/train/) Powered by Discuz! X3.5