我有这段代码。
private static Set<String> myField;
static {
myField = new HashSet<String>();
myField.add("test");
}
当我按照原来的顺序编写代码时,它可以正常工作。但是当我颠倒顺序后,就会出现非法向前引用错误。
static {
myField = new HashSet<String>();
myField.add("test"); // illegal forward reference
}
private static Set<String> myField;
我有些震惊,没想到Java会出现这样的情况。 :)
这里发生了什么?为什么声明的顺序很重要?为什么赋值可以正常工作,但方法调用却不能?