Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java: how does a component know its owner

Tags:

java

Suppose I have a class A and a class B.

public class A {

    private B b;

    public A() {
        this.b = new B();
    }

    public B getB() {
        return this.b;
    }
}

public class B {

    public String getSome() {
        return "Get some!";
    }
}

I know I can get B through A, because A has (or owns) B: new A().getB().
But if I have B, can I get A?

like image 484
MC Emperor Avatar asked Dec 07 '25 06:12

MC Emperor


2 Answers

Sure, just add routine getA() in you class B, and change the line in your constructor to

public A() {
    this.b = new B(this);
}

This of course assumes your class B has a constructor which accepts an A, e.g.,

public B(A a) {
    this.a = a;
}
like image 146
Johan Sjöberg Avatar answered Dec 09 '25 20:12

Johan Sjöberg


B needs an explicit reference to its owner:

public class B {
  private final A owner;

  public B(A owner) {
    this.owner = owner;
  }

  public A getOwner() {
    return owner;
  }
}

And in A:

public A() {
  b = new B(this);
}
like image 30
Jason Terk Avatar answered Dec 09 '25 18:12

Jason Terk