如何调用所有者的方法?

时间:2010-03-21 16:34:36

标签: java design-patterns

我有Class1,其中有方法:

  1. setSomething()
  2. createObjectOfClass2()
  3. 现在,当我创建Class2的对象时,是否可以从中调用setSomething方法?

3 个答案:

答案 0 :(得分:2)

如果您愿意,但是您正在引入耦合,这将使以后的分离功能变得非常困难。只需使setSomething公开,并将对第一个对象的引用传递给第二个构造函数。

public class Class1 {
    Class2 object2 = null;

    public void setSomething(Object something) { ... }

    public void createObjectOfClass2() {
        object2 = new Class2(this);
    }
}

public class Class2 {
    public Class2(Class1 parent) {
        parent.setSomething(new Foo());
    }
}

答案 1 :(得分:0)

如果Class2没有扩展Class1,那么如果它不是静态方法,你可以在Class1的任何实例上调用setSomething():

Class1 c = new Class1();
c.setSomething();

答案 2 :(得分:0)

致电Parent.this.method()

e.g:

public class K1
{
public class K2
    {
    public void hello()
        {
        K1.this.setSomething();
        }

    } 

public void setSomething()
   {
   System.out.println("Set Something");
   }

public K2 createObjectOfClass2()
   {
   return new K2();
   }

public static void main(String args[])
   {
   new K1().createObjectOfClass2().hello();
   }


}