【发布时间】:2015-10-04 09:05:39
【问题描述】:
public class A {
public static String HOST;
static {
HOST = ...;
}
}
public class B {
public static String URL;
static{
URL = A.HOST + ...;
}
}
我的问题是 A.HOST 是否会在 B 使用之前正确初始化? 这种行为是否在规范中定义?
【问题讨论】:
-
只运行一个简单的测试看看它是否被初始化
-
如果你先对 A 进行任何引用,A 将被完全初始化,并且每当你第一次调用 B 时,它都会正常工作。如果先调用B,遇到A.HOST会级联到A。
-
有趣的是,如果 A 有类似
HOST = B.FOO的东西。不过,不确定它是否会编译。
标签: java language-lawyer