为什么两个程序有前向引用错误,而第三个程序没有?
以下内容不会编译,给出“非法转发引用”消息:
class StaticInitialisation {
static
{
System.out.println("Test string is: " + testString);
}
private static String testString;
public static void main(String args[]) {
new StaticInitialisation();
}
}
但是,下面会编译:
class InstanceInitialisation1 {
{
System.out.println("Test string is: " + this.testString);
}
private String testString;
public static void main(String args[]) {
new InstanceInitialisation1();
}
}
但以下内容无法编译,给出“非法转发引用”消息:
class InstanceInitialisation2 {
private String testString1;
{
testString1 = testString2;
}
private String testString2;
public static void main(String args[]) {
new InstanceInitialisation2();
}
}
为什么 StaticInitialization 和 InstanceInitialisation2 不能编译,而 InstanceInitialisation1 可以编译?