如何调用在外部类的方法中定义的类的实例

时间:2011-04-26 10:04:47

标签: java

class Outer{

    public void Method(){

    int i=10;
    System.out.println(i);
    Class InsideMethod{
        //
    }
}

问题:如何在方法

之外调用InsideMethod对象

4 个答案:

答案 0 :(得分:5)

此片段说明了各种可能性:

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调度方法,因为这是定义此方法的最内层封闭类。

答案 1 :(得分:3)

如果我理解了你想要的东西,你可以这样做:

OuterClass.this

答案 2 :(得分:2)

  

在外部的方法中定义   类

如果它在方法中定义,则其范围仅限于该方法。

答案 3 :(得分:0)

从我对你的问题的理解......(参见下面的例子),在外部类的方法中定义的类'Elusive'的实例不能从外部引用方法'doOuter'。

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() {

        }
    }

}