在类的"所有者"类中调用函数

jas*_*son 4 java

以下伪代码很好地总结了我的问题,我认为......

class Owner {
    Bar b = new Bar();

    dostuff(){...}
}    

class Bar {
    Bar() {
        //I want to call Owner.dostuff() here
    }
}
Run Code Online (Sandbox Code Playgroud)

Bar b是'拥有'(什么是正确的词?)by Owner(它'有一个').那么类型的对象如何Bar调用Owner.dostuff()呢?

起初我在思考super();,但这是继承的类.然后我想通过一个界面,我是在正确的轨道上?

Cap*_*ffe 7

如果dostuff是常规方法,则需要传递Bar实例.

class Owner {

   Bar b = new Bar(this);

   dostuff(){...}
}    

class Bar {
   Bar(Owner owner) {
      owner.dostuff();
   }
}
Run Code Online (Sandbox Code Playgroud)

请注意,Bar可能有很多所有者,而且没有任何现实的方法可以找出他们是谁.

编辑:您可能正在寻找内部类:示例和注释.

class Owner {

   InnerBar b = new InnerBar();

   void dostuff(){...}

   void doStuffToInnerBar(){
       b.doInnerBarStuf();
   }

   // InnerBar is like a member in Owner.
   class InnerBar { // not containing a method dostuff.
      InnerBar() { 
      // The creating owner object is very much like a 
      // an owner, or a wrapper around this object.
      }
      void doInnerBarStuff(){
         dostuff(); // method in Owner
      }
   }
}
Run Code Online (Sandbox Code Playgroud)