Почему не этот код работаетДоступ к частной переменной экземпляра внутреннего класса из внешнего класса
public class BB
{
private class A
{
private int x;
}
public static void main(String[] args)
{
A a = new A();
a.x = 100;
System.out.println(a.x);
}
}
в то время как этот код работает?
public class BB
{
private class A
{
private int x;
}
static int y = 3;
public static void main(String[] args)
{
BB b = new BB();
b.compile();
System.out.println("y = "+ y);
}
public void compile()
{
A a = new A();
a.x = 100;
System.out.println(a.x);
System.out.println("y = "+ y);
}
}
В первом коде, когда я пытаюсь обратиться к переменному экземпляру «х» внутреннего класса «А» на объект внутреннего класса «а», я получаю сообщение об ошибке сказав, что я использую внутренний класс в статическом контексте. Ошибка при выполнении одного и того же метода.
Во втором коде, вы не имеет доступа к внутренним классом в статическом контексте: вы к нему доступ из метода класса 'bb'. Вот почему вы не получаете эту ошибку. – RaptorDotCpp
try 'BB b = new BB(); \t A a = b.new A(); ' –
Ваш вложенный класс также должен быть статическим. –