从内部 Class 的对象访问外部 class 函数

Access outer class function from Object of Inner Class

我知道有人提出了与此问题相关的类似问题,但是我无法解决我的问题。我试图将我的问题简化为以下代码 -

class Outer
{
    Outer()
    {}

    class Inner
    {
        Inner()
        {}
    }

    void func()
    {
        System.out.println("Outer");
    }
}

public class Nested
{
    public static void main(String args[])
    {
        Outer oo = new Outer();
        Outer.Inner ii = oo.new Inner();

//          ii.func(); I know this won't work


    }
}

我可以从内部 class "ii" 的对象调用外部 class 函数 "func()" 吗??如果是,如何?

使用内部 class 中的 Outer.this.func()。 请注意,您只能从内部 class 执行此操作,而不能从外部执行此操作。

简短回答:对 Outer.this 的引用是 Inner 中的 private,因此您无法从 Inner 的实例访问对 Outer 实例的引用=].

您可以这样导出此引用:

class Outer {
    Outer() {
    }

    class Inner {
        Inner() {
        }

        public Outer getOuter() {
            return Outer.this;
        }
    }

    void func() {
        System.out.println("Outer");
    }
}

那么你可以简单地做:

ii.getOuter().func();
class Outer {
   Outer() {}
   class Inner {
     Inner() {}

     void callFunc() {
       Outer.this.func();
     }
  }

  void func() {
     System.out.println("Nested");
  }
}

public class Nested {
 public static void main(String args[]) {
   Outer.Inner ii = new Outer().new Inner();
   ii.callFunc();

 // ii.func(); I know this won't work
 }
}

这对你有用

package com;


class Outer
{
    Outer()
    {}

    class Inner
    {
        Inner()
        {}
        public Outer g(){
            return Outer.this;}
    }

    void func()
    {
        System.out.println("Outer");
    }
}

public class Test1
{
    public static void main(String args[])
    {
        Outer oo = new Outer();
        Outer.Inner ii = oo.new Inner();


         ii.g().func(); 


    }
}