Я изучаю, как использовать внутренние классы, но я сталкиваюсь с тревожной ошибкой, когда пытаюсь ее скомпилировать. Я пытаюсь понять, как внутренние и внешние классы могут использовать переменные и методы друг друга.Проблема, создающая внутренний класс
Когда я пытаюсь скомпилировать этот код он говорит:
.../src/MyOuter.java:39: non-static variable inner cannot
be referenced from a static context
Код:
public class MyOuter{
private int x;
public MyInner inner = new MyInner();
public int getOuterX(){
return x;
}
private void doStuff(){
inner.go();
}
class MyInner{
public int getInnerX(){
return x;
}
void go(){
x = 42;
}
}
public static void main(String[] args) {
MyOuter outer = new MyOuter();
outer.doStuff();
System.out.println("outer.x = " + outer.getOuterX());
System.out.println("inner.x = " + inner.getInnerX());
}
}
Заранее спасибо за помощь!
'inner' - поле экземпляра вашего класса' MyOuter'. У вас статический метод. В этом контексте он не существует. Вам нужно получить к нему доступ через экземпляр «MyOuter». –