【问题标题】:Calling outer class function from inner class [duplicate]从内部类调用外部类函数[重复]
【发布时间】:2011-02-18 00:09:23
【问题描述】:

我在Java中实现了一个嵌套类,我需要从内部类调用外部类方法。

class Outer {
    void show() {
        System.out.println("outter show");
    }

    class Inner{
        void show() {
            System.out.println("inner show");
        }
    }
}

如何调用Outer 方法show

【问题讨论】:

  • 我们可以假设你的内部类拥有一个外部类的实例吗?
  • @Eric: 在java中,一个非静态内部类的实例总是持有一个外部类的实例
  • @Eric:在非静态 Java 内部类中总是如此!
  • 糟糕。我搞混了。我们可以假设您的 outer 类包含 inner 类的实例吗?
  • @Eric:我认为你现在更加混乱了。不,您不能假设外部类拥有内部类的实例;但这与问题无关。您是第一个问题(内部类是否拥有外部类的实例)相关问题;但答案是肯定的。

标签: java


【解决方案1】:

这应该可以解决问题:

Outer.Inner obj = new Outer().new Inner();
obj.show();

【讨论】:

  • 他问的是Outer类的show()方法,这个调用会调用Inner类的show()。
【解决方案2】:

你需要在调用前加上外部类:

Outer.this.show();

【讨论】:

  • 太棒了。我对此进行了跟进。如何通过拥有内部类实例从完全不同的地方调用外部类中的方法。内部 myInner = new Outer().new Inner(); ...例如,如果外部类具有公共方法 getValue()。 myInner.getValue() 不起作用, myInner.Outer.getValue() 也不起作用。我知道我可以通过在 Inner 中有一个方法 getOwner 然后调用它来做到这一点。但我需要那个方法吗?谢谢
  • 如果outer是一个接口,那么如何从inner类调用抽象方法..?
猜你喜欢
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 2010-12-12
  • 2023-04-03
相关资源
最近更新 更多