内部类访问外部类方法,方法名称相同

Pet*_*der 8 java inner-classes

我有一个类和一个子类

01 public class A{
02   void test(){};
03   public class B{
04     void test(){
05       test();
06     }
07   }
08 }
Run Code Online (Sandbox Code Playgroud)

好吧,在05行id喜欢访问类A的方法测试.但我进入循环因为我不知道如何指定使用类A的方法.

有任何想法吗?

Nan*_*ale 15

01 public class A{
02   void test(){};
03   public class B{
04     void test(){
05       test();  // local B.test() method, so recursion, use A.this.test();
06     }
07   }
08 }
Run Code Online (Sandbox Code Playgroud)

编辑:正如@Thilo所提到的:避免在外部类和内部类中使用相同的方法名称,这将避免命名冲突.

  • +1.一个可能更好的解决方案是将方法名称更改为不冲突. (3认同)

Y__*_*Y__ 6

你可以这样做:

public class A{
   void test(){
        System.out.println("Test from A");
    };
    public class B{
        void test(){
            System.out.println("Test from B");
            A.this.test();
        }
    }

    public static void main(String[] args) {
            A a = new A();
            B b = a.new B();
            b.test();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您有以下输出:

Test from B
Test from A
Run Code Online (Sandbox Code Playgroud)