2016-03-30 15 views
3

が含まれていますダガー2注入()私はダガー2に移行しようとしていることをダガーに次のセットアップを持っている依存サイクル

public class Origin { 
    final A a; 
    public Origin(A a) { 
     this.a = a; 
    } 
} 

public class A { 
    final B b; 
    @Inject public A (B b) { 
     this.b = b; 
    } 
} 

public class B { 
    final Lazy<A> a; 
    @Inject public B (Lazy<A> a) { 
     this.a = a; 
    } 
} 

その後、私のモジュールに私が持っている:

@Provides @Singleton Origin providesOrigin(A a) { 
    return new Origin(a); 
} 

問題は、私はLazyを使用しているにもかかわらず、である、ダガー2は私に、次のコンパイル時のエラーを与える:

error: AppComponent.inject() contains a dependency cycle

何か不足していますか? LazyProviderに置き換えようとしましたが、結果は同じです。

+0

私がBからAに怠け者を移した場合、これはうまくいくと思います。 –

+0

悲しいことに、これは役に立たない。 :( –

+0

"新しい"文でインスタンスを作成する方法は同じですか?同じサイクルがあります。 – salcosand

答えて

3

私の問題は、ダガーのバージョン2.0を使用していて、これはまだ開いていたところです。issueです。現在のバージョン2.1にアップデートすると、問題はもう存在しませんでした。

関連する問題