#java
#java
Вопрос:
class Outer{
public void Method(){
int i=10;
System.out.println(i);
Class InsideMethod{
//
}
}
Вопрос: Как я могу вызвать объект InsideMethod вне метода
Комментарии:
1. Не могли бы вы привести пример?
Ответ №1:
Этот фрагмент иллюстрирует различные возможности:
public class Outer {
void onlyOuter() { System.out.println("111"); }
void common() { System.out.println("222"); }
public class Inner {
void common() { System.out.println("333"); }
void onlyInner() {
System.out.println("444");// Output: "444"
common(); // Output: "333"
Outer.this.common(); // Output: "222"
onlyOuter(); // Output: "111"
}
}
}
Примечание:
- Метод внутреннего класса скрывает метод внешнего класса с аналогичным именем. Следовательно,
common();
вызов отправляет реализацию из внутреннего класса. - Использование
OuterClass.this
конструкции для указания того, что вы хотите отправить метод из внешнего класса (чтобы обойти скрытие) - Вызов
onlyOuter()
отправляет метод изOuterClass
, поскольку это самый внутренний класс, который определяет этот метод.
Ответ №2:
Если я правильно понял, что вы хотите, вы могли бы сделать:
OuterClass.this
Ответ №3:
определенный внутри метода внешнего класса
Если он определен внутри метода, то его область действия ограничена только этим методом.
Комментарии:
1. мы можем вызвать : new className().Method();
2. Да, мы можем. Но мы не можем получить доступ к переменным внутри этого метода.
Ответ №4:
Из того, что я понял из вашего вопроса… (смотрите Пример ниже), на экземпляр класса ‘Elusive’, определенный в методе внешнего класса, нельзя ссылаться извне метода ‘Douter’.
public class Outer {
public void doOuter() {
class Elusive{
}
// you can't get a reference to 'e' from anywhere other than this method
Elusive e = new Elusive();
}
public class Inner {
public void doInner() {
}
}
}