Локальный внутренний класс метода
-
09-06-2019 - |
Вопрос
public class Test {
public static void main(String[] args) {
}
}
class Outer {
void aMethod() {
class MethodLocalInner {
void bMethod() {
System.out.println("Inside method-local bMethod");
}
}
}
}
Может кто-нибудь сказать мне, как распечатать сообщение из bMethod
?
Решение
Вы можете только создать экземпляр MethodLocalInner
в пределах aMethod
.Ну действуй
void aMethod() {
class MethodLocalInner {
void bMethod() {
System.out.println("Inside method-local bMethod");
}
}
MethodLocalInner foo = new MethodLocalInner(); // Default Constructor
foo.bMethod();
}
Другие советы
Внутри метода метод после объявления класса МетодЛокальныйИннер вы могли бы, например, сделать следующий вызов:
new MethodLocalInner().bMethod();
Почему бы вам просто не создать экземпляр MethodLocalInner
, в aMethod
, и позвони bMethod
на новом экземпляре?
Это может помочь вам начать (у меня нет ничего подходящего для тестирования).Обратите внимание на измененный синтаксис конструктора:
http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html
Вам нужно вызвать new Outer().aMethod() внутри основного метода.Вам также необходимо добавить ссылку на MethodLocalInner().bMethod() внутри вашего aMethod(), например:
public class Test {
public static void main(String[] args) {
new Outer().aMethod();
}
}
void aMethod() {
class MethodLocalInner {
void bMethod() {
System.out.println("Inside method-local bMethod");
}
}
new MethodLocalInner().bMethod();
}