Это происходит потому, что a
и b
являются свойствами, тогда как class Outer
d
представляет собой переменную внутри метода, называемого method
. Поэтому он должен иметь доступ к d
.
Вот пример от tutorialspoint.
В Java мы можем написать класс внутри метода, и это будет локальный тип . Как и локальные переменные, область внутреннего класса ограничена в рамках метода.
Метод-локальный внутренний класс может быть создан только внутри метода , где определяется внутренний класс. Следующая программа показывает, как использовать локальный внутренний метод.
public class Outerclass{
//instance method of the outer class
void my_Method(){
int num = 23;
//method-local inner class
class MethodInner_Demo{
public void print(){
System.out.println("This is method inner class "+num);
}
}//end of inner class
//Accessing the inner class
MethodInner_Demo inner = new MethodInner_Demo();
inner.print();
}
public static void main(String args[]){
Outerclass outer = new Outerclass();
outer.my_Method();
}
}
This is method inner class 23
Подумайте о времени жизни d, по сравнению с временем жизни экземпляра класса Inner. –
Хотя он поддерживается языком, лучше не определять классы в методах ... –
Он должен быть доступен. Что заставляет вас думать, что это не так? Вы используете Java 8 или что-то более старое? –