谁能解释一下Java如何执行这段代码?我的意思是执行每个语句的顺序.
public class Foo
{
boolean flag = sFlag;
static Foo foo = new Foo();
static boolean sFlag = true;
public static void main(String[] args)
{
System.out.println(foo.flag);
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
false
Run Code Online (Sandbox Code Playgroud) 我一直在使用新的Eclipse Neon,我的一些代码开始直接给我错误.
这是很奇怪,我在第一,但后来我发现这里的霓虹灯欧洲法院(Eclipse的Java编译器)采用JDK 9提前释放编译器的态度.
我没有遇到该链接中的相同问题,而是我将在此解释的另一个问题.
这是一个测试类,它在Eclipse Neon,JDK 9编译器和JDK 8编译器(不是以前版本的Eclipse)中给出了编译错误.
public class Weird
{
private final Function<String, String> addSuffix =
text -> String.format( "%s.%s", text, this.suffix );
private final String suffix;
public Weird( String suffix )
{
this.suffix = suffix;
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于上面的代码,在所述误差线4为suffix是:
????????????????????????????????????????????????????????????
? Compiler ? Error ?
????????????????????????????????????????????????????????????
? ECJ ? Cannot reference a field before it is defined ?
? JDK 9 ? error: illegal forward reference …Run Code Online (Sandbox Code Playgroud)