Java 如何调用所有者的方法?
我有Class1,它有方法: 设置某物 createObjectOfClass2Java 如何调用所有者的方法?,java,design-patterns,Java,Design Patterns,我有Class1,它有方法: 设置某物 createObjectOfClass2 现在,当我创建Class2的对象时,是否可以从中调用setSomething方法?如果Class2没有扩展Class1,那么您可以在Class1的任何实例上调用setSomething,如果它不是静态方法: Class1 c = new Class1(); c.setSomething(); 如果您愿意,但是您引入了耦合,这将使以后分离功能变得非常困难。只需将setSomething公开,并将对第一个对象的引用传
现在,当我创建Class2的对象时,是否可以从中调用setSomething方法?如果Class2没有扩展Class1,那么您可以在Class1的任何实例上调用setSomething,如果它不是静态方法:
Class1 c = new Class1();
c.setSomething();
如果您愿意,但是您引入了耦合,这将使以后分离功能变得非常困难。只需将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());
}
}
调用Parent.this.method e、 g:
Class2似乎不是Class1的子类。我用一个糟糕的标题迷惑了你。Class2不是从class1派生出来的。@joseph:那么编辑它吧,parent的方法记住Class2扩展了Class2Class1 parent—对于不是从class1继承Class2的参数来说,这个名字很奇怪。Roman:parent在原始标题中,所以我使用了它。我认为这很合适:我个人不喜欢用parent作为超类的笔名。不过,正如您在另一篇评论中所说,如果您愿意,owner fits也可以随意更改。但我不想创建新实例,我需要从实例中调用它,它创建了class2-1,并带有一个误导性的标题,您让所有试图回答的人和您自己都感到沮丧。您能给出一个具体的示例说明您正在尝试做什么吗?
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();
}
}