• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服电话

    400-123-4567

    电子邮件

    1691000615@qq.com
  • 星点互联APP

    随时掌握企业动态

  • 扫描二维码

    关注星点微信公众号

Lv.4 学员组
3号会员,10活跃度,2019/01/10 加入学习
  • 4发帖
  • 4主题
  • 0关注
  • 0粉丝
学海无涯苦作舟,书山有路勤为径,加油哦
优秀讲师更多
课堂交流更多
开启左侧

[java] Class.forName(String,false,loader)初始化设置为false,结果还是初始化执行了静态...

[复制链接]
小燕秋 发表于 2019-1-10 17:08:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
小燕秋提问: 发布时间:2019-01-10
Class.forName(String,false,loader)初始化设置为false,结果还是初始化执行了静态...
悬赏2 金钱 (回答此问题,将获得2 金钱奖励)
状态问题未解决,快来回答吧
都说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. }
复制代码


回复

使用道具 举报

精彩评论3

瓦力老师 发表于 2019-1-10 17:09:13 | 显示全部楼层
可能因为你这个StringL类 包括了入口main函数,说明一开始就已经被加载了。
所以就执行了静态代码块
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies 上传

本版积分规则

Powered by Discuz!X3.5 ©2001-2013 Comsenz Inc.星点互联设计( 鲁ICP(125234543) )