Следующее не компилируется, передавая сообщение "незаконное прямое обращение":
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();
}
}
Почему StaticInitialisation и InstanceInitialisation2 не компилируются, а InstanceInitialisation1 делает?