Java对象如何引用创建它的类

时间:2017-12-21 04:10:10

标签: 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 use getNum*/

    }
}

我可能会Bar延长foo,或者创建一个foo对象。

问题是foo对象已经存在(创建bar的对象)并且我不知道如何引用它。

2 个答案:

答案 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;
    }
}