此信息可能存在于某处,但我不知道使用哪些关键字来查找
因此,如果我的程序的主方法foo
创建了另一个类的对象bar
,那么bar
如何引用foo
中的方法。
public class Foo{
Bar baz = new Bar();
public Foo(){}
public int getNum(){
return 3;
}
}
public class Bar{
public Bar(){
/*Somehow use getNum*/
}
}
我可能会Bar
延长foo
,或者创建一个foo
对象。
问题是foo
对象已经存在(创建bar
的对象)并且我不知道如何引用它。
答案 0 :(得分:3)
对象不知道哪些类创建了它们 * ,所以你需要通过传递对构造函数的引用来告诉它们:
private final Foo foo;
public Bar(Foo foo) {
this.foo = foo;
}
...
public class Foo {
Bar baz = new Bar(this);
...
}
* 内部类的对象隐式地获取对其外部对象的引用,但它可能不一定是创建它们的类。始终获得对创建类的引用的唯一对象是方法本地和匿名类的对象。
答案 1 :(得分:2)
在Foo
类中创建Bar
字段,然后为Bar
创建一个带Foo
个参数的构造函数。使用构造函数设置字段的实例。现在,您只需将this
关键字传递给构造函数:
public class Foo {
Bar baz = new Bar(this);
public Foo() {
}
public int getNum() {
return 3;
}
}
public class Bar {
private Foo parent;
public Bar(Foo foo) {
this.parent = foo;
}
public Foo getParent() {
return parent;
}
}