V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
guyeuro
V2EX  ›  问与答

Java : logger 初始化和 static 块

  •  
  •   guyeuro · 2017-08-25 20:52:51 +08:00 · 2032 次点击
    这是一个创建于 2651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    下面这个代码有问题 不能编译成功 logger 初始化和 static 块之间为何不能这样顺序?

     class Account{
    
      private static final Logger AccountLogger = Logger.getLogger("AccountLogger");
    
      static {
    	...
        AccountLogger.info("..");
      }
      ...
     }
    
    4 条回复    2017-08-27 20:38:30 +08:00
    elgae
        1
    elgae  
       2017-08-25 22:05:13 +08:00
    你可以分别编译 AccountLogger、Logger (如果编译过程中需要其他的类,先编译那些类),再来编译 Account。
    原因是你没对 Account 产生调用,不会自动加载 Account 及其依赖的类,没有加载,虚拟机自然就找不到。

    题外话,看了你的话题列表,对你的学习能力深表同情。
    doing
        2
    doing  
       2017-08-25 22:47:03 +08:00
    我觉得不应该出错啊,静态属性和静态代码块,就是按照写的先后顺序初始化的呀。。。
    dltsgl
        3
    dltsgl  
       2017-08-25 22:47:12 +08:00
    顺序没有问题啊,你确定是顺序的问题?
    cxshun
        4
    cxshun  
       2017-08-27 20:38:30 +08:00
    你确定是顺序的问题?我直接拷你代码是没问题的。

    静态初始化是按照顺序来执行的,你的顺序没有任何问题,至于 1 楼的解释,抱歉,我也看不懂。而后面说你的学习能力的,这个我就不作评价了。

    PS:一个社区并不会一直有人无偿回答你总是,要尝试自己去解决问题。很多东西多搜搜就有了,不要用 baidu,不要用 baidu,不要用 baidu,重要的事情说 3 遍。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3262 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:00 · PVG 21:00 · LAX 05:00 · JFK 08:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.