0
我有一个实用工具类,看起来像这样:静态块永远不会运行
public final class MyUtils {
public static final List<String> MY_VALUES = new ArrayList<String>();
{
MY_VALUES.add("foo");
MY_VALUES.add("bar");
}
}
我把这个从另一个类就像这样:
MyUtils.MY_VALUES
如果我这样做,名单空,如果我调试我看到静态块永远不会运行。
据我所知,从When does static class initialization happen?和How to force a class to be initialised?的答案我应该马上做a static field of the class is assigned
。我也尝试使可变非最终符合条件“a non-constant static field is used
”。
我可以使用初始化方法,也可以在其他两个问题中获得,也可以在Why doesn't my static block of code execute?中使用,但我仍然想理解它为什么不起作用,尽管我似乎已经完成了语言的条件规范。
工作,谢谢。将是几分钟,直到我可以接受你的答案。你能解释一下没有'static'关键字的结构有什么区别吗?我之前使用过,它一直工作到目前为止(例如,如果我调用静态方法,块之前运行)。 – 2013-03-27 01:13:33
看到我上面编辑的答案 – 2013-03-27 01:19:03
真棒提示,thx – Jason 2013-03-27 01:27:17