If I read the example correctly. B does not need A. It just provides a method 
to retrieve a new instance of A.

So A and B should really be 2 separate classes.

Am 23. Dezember 2014 03:10:12 MEZ, schrieb Tim Boudreau <[email protected]>:
>What you have is a design problem.  If A needs B to exist, and B needs
>A to 
>exist, then either
>
>- There is some other implicit object that provides data to both A and
>B, 
>or
>- You really have one logical class, and your implementation is trying
>to 
>pretend it's two
>
>The most straightforward way to resolve this is *don't use Guice to 
>construct these.*  I.e. A constructs a B and passes "this" to it and
>stores 
>it as a field.  Done.
>
>Or if you want to use Guice to construct it (and arguably a better
>design), 
>have
>
>@Inject
>A (AandBData data) {...}
>...
>@Inject
>B (AandBData data) {...}
>
>-Tim
>On Friday, December 19, 2014 1:31:31 PM UTC-5, [email protected]
>wrote:
>>
>> Hello all.
>>
>> Lets say I have:
>>
>> class A {
>> //...
>> }
>>
>> class B {
>>     A getA() {
>>         // Building a A using B attributes
>>     }
>> //...
>> }
>>
>> I'd love to write:
>>
>> class B {
>>     private final a;
>>
>>     @Inject
>>     private B(A a) {
>>         this.a = a;
>>     }
>> //...
>> }
>>
>> But, since the building of the A instance relies on some data from B,
>I 
>> can not.
>> Typical exemple would be two classes mapping two SQL tables, where
>getA() 
>> is following a foreign key.
>>
>> Is there a way Guice can be used around here? (Factory that uses
>"this", 
>> something like that)
>> Perhaps is it a silly question, and I should do my "new" thing as I
>would 
>> if Guice wasn't around; but it is, so I'm trying to find the proper
>answer 
>> here.
>>
>>
>> Adrien.
>>
>
>-- 
>You received this message because you are subscribed to the Google
>Groups "google-guice" group.
>To unsubscribe from this group and stop receiving emails from it, send
>an email to [email protected].
>To post to this group, send email to [email protected].
>Visit this group at http://groups.google.com/group/google-guice.
>To view this discussion on the web visit
>https://groups.google.com/d/msgid/google-guice/994f5a1e-76ed-4f4d-9dd3-08bc69cd3164%40googlegroups.com.
>For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/57718FAD-8E21-47EF-8060-8263CC5869A7%40gmx.ch.
For more options, visit https://groups.google.com/d/optout.

Reply via email to