I love the annotation idea -- that would be a much simpler way using annotations with parameters, without requiring the user to make an implementation of it.
The "Lazy" one doesn't really follow from it, though. "T" in Provider<T> would still be lost by erasure. You'd need to subclass Lazy in order to store the information in the type system. sam On Thu, Apr 10, 2014 at 10:19 PM, Tavian Barnes <[email protected]>wrote: > Something cool just occurred to me, it'd be nice to be able to write new > Key<@Named("foo") String>(){}. > > Anyway I think type annotations need a little more thought. If > Provider<@Named("foo") > String> works, why not this: > > // Attempt to simulate Dagger's Lazy<T> > public class Lazy<T> { > @Inject Provider<T> provider; > private T instance; > public synchronized T get() { > if (instance == null) instance = provider.get(); > return instance; > } > } > > public class Foo { > @Inject Lazy<@Named("foo") String> lazy; > } > > Does the @Named("foo") follow the type parameter into the implementation > of Lazy? If not, then I guess any binding annotations on type arguments > should cause an error unless they're on the argument to a Provider. > > > On Tuesday, 8 April 2014 17:06:05 UTC-4, Christian Gruber wrote: > >> Heh. I just made an issue for exactly that purpose. >> >> c. >> >> On 8 Apr 2014, at 13:57, Tavian Barnes wrote: >> >> > What about tests? It seems difficult to test something like this >> > without >> > some test classes that actually use type annotations somewhere. >> > >> > Right now my idea is to put Java 8 specific tests in a special >> > package, and >> > exclude that package unless a special Maven profile is activated. I >> > assume >> > something equivalent is possible with Ant. >> > >> > On Tuesday, 8 April 2014 12:55:56 UTC-4, Sam Berlin wrote: >> > [snip] >> > -- > 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. > 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. For more options, visit https://groups.google.com/d/optout.
