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.
