Java : logger 初始化和 static 块

2017-08-25 20:52:51 +08:00
 guyeuro

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

 class Account{

  private static final Logger AccountLogger = Logger.getLogger("AccountLogger");

  static {
	...
    AccountLogger.info("..");
  }
  ...
 }
2051 次点击
所在节点    问与答
4 条回复
elgae
2017-08-25 22:05:13 +08:00
你可以分别编译 AccountLogger、Logger (如果编译过程中需要其他的类,先编译那些类),再来编译 Account。
原因是你没对 Account 产生调用,不会自动加载 Account 及其依赖的类,没有加载,虚拟机自然就找不到。

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

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

PS:一个社区并不会一直有人无偿回答你总是,要尝试自己去解决问题。很多东西多搜搜就有了,不要用 baidu,不要用 baidu,不要用 baidu,重要的事情说 3 遍。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385832

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX