How to initialize a circular dependency (final fields referencing each other)?

前端 未结 3 514
轮回少年
轮回少年 2021-01-12 09:05

How do you initialize this:

class A {
    final B b;

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

class B {
    final A a;

    B(A a) {
        this.a = a;
           


        
3条回答
  •  清歌不尽
    2021-01-12 09:44

    What you are having is a circular dependency. The only way I can think of is to not declare the fields as final and have your dependency injected using setter injection instead of constructor injection.

    A a = new A();
    B b = new B();
    
    a.setB(b);
    b.setA(a);
    

提交回复
热议问题