It looks like there are bugs in the current release's handling of 
AnnotatedTypes that prevents this idea from working: 
https://bugs.openjdk.java.net/browse/JDK-8039916.  That prevents the 
annotation on Provider<@Named("foo") String> from being retrieved on a 
constructor or method parameter; it only works on fields right now.  I 
don't think it affects the new Key<@Named("foo") String>(){} idea at least 
so I'll try to write that part.

I asked this SO question about the bug: 
http://stackoverflow.com/questions/23025363/how-to-get-generic-type-information-from-getannotatedparametertypes-in-java-8/23066816.
 
 Hopefully there's a workaround.

On Friday, 11 April 2014 12:53:24 UTC-4, Sam Berlin wrote:
>
> It will?  Smart.  Maybe it *is* possible to thread it through then, 
> somehow.  Looks like this can get confusing real quickly... some 
> experiments seem in order.
>
>  sam
>
>
> On Fri, Apr 11, 2014 at 12:50 PM, Tavian Barnes 
> <[email protected]<javascript:>
> > wrote:
>
>> The Lazy example isn't related, I was just talking about the current 
>> process of resolving type parameters in just-in-time bindings.  The current 
>> behaviour will give Lazy a Provider<String> for that example. 
>>
>> On Friday, 11 April 2014 09:03:06 UTC-4, Sam Berlin wrote:
>>
>>> 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> 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.

Reply via email to