Java对象如何引用创建它的类
这个信息可能存在于某个地方,但我不知道用什么关键字来查找它 因此,如果我的程序的主方法Java对象如何引用创建它的类,java,Java,这个信息可能存在于某个地方,但我不知道用什么关键字来查找它 因此,如果我的程序的主方法foo创建了另一个类的对象bar,那么bar如何引用foo中的方法呢 public class Foo{ Bar baz = new Bar(); public Foo(){} public int getNum(){ return 3; } } public class Bar{ public Bar(){ /*Somehow
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
的对象),我不知道如何引用它。在bar
类中创建foo
字段,然后为bar
创建一个使用foo
参数的构造函数。使用构造函数设置字段的实例。现在,您只需将关键字传递到构造函数中:
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;
}
}
private final Foo foo;
public Bar(Foo foo) {
this.foo = foo;
}
...
public class Foo {
Bar baz = new Bar(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;
}
}
private final Foo foo;
public Bar(Foo foo) {
this.foo = foo;
}
...
public class Foo {
Bar baz = new Bar(this);
...
}
*内部类的对象隐式地获取对其外部对象的引用,但不一定是创建它们的类。始终获取对创建类的引用的唯一对象是方法本地类和匿名类的对象。将
Foo
实例传递到Bar
newbar(this)
和changeBar
constructorpublic Bar(Foo-Foo)
。此外,您所做的操作可能会导致循环依赖,如果getNum
依赖于在Foo
s构造函数中初始化的某个实例变量,则从Bar
s构造函数调用它时将失败。谢谢,这正是我需要的!快速、简短和简单请参阅我的第二条评论。我个人不建议使用那种依赖关系。当对象的实例尚未完全初始化时,将对象的实例传递给另一个对象是错误的。