Signature of MethodHandleInfo.reflectAs is not specific enough
Ali Ebrahimi
ali.ebrahimi1781 at gmail.com
Sun Nov 10 17:24:56 PST 2013
This is another workaround:
public <T extends Member&AnnotatedElement, R> R reflectAs(Class<? super T>
expected, Lookup lookup);
info.reflectAs(Member.class, lookup);//works
info.reflectAs(AnnotatedElement.class, lookup);//works
info.reflectAs(Member.class, lookup);//works
info.reflectAs(AnnotatedElement.class, lookup);//works
info.reflectAs(Object.class, lookup);doesn't work.
info.reflectAs(Other.class, lookup);doesn't work.
with this does not need to your javadoc and is more type safe. .
On Mon, Nov 11, 2013 at 1:59 AM, Remi Forax <forax at univ-mlv.fr> wrote:
> The is a stupid issue with the signature of MethodHandleInfo.reflectAs,
> j.l.r.Field, Method or Constructor implement two interfaces Member and
> AnnotatedElement, with the current signature, the code
> info.reflectAs(Member.class, lookup)
> works but the code
> info.reflectAs(AnnotatedElement.class, lookup)
> doesn't work.
>
> Because there is no way to do an 'or' between several bounds of
> a type variable, I think that the signature of reflectAs should be
> changed from :
> public <T extends Member> T reflectAs(Class<T> expected, Lookup lookup);
> to
> public <T> T reflectAs(Class<T> expected, Lookup lookup);
>
> and the javadoc should be modified to explain that a Member or
> AnnotatedElement are
> valid bounds of T.
>
> As a side effect, the signature of MethodHandles.reflectAs(Class<T>,
> MethodHandle)
> should be updated accordingly.
>
> There is a workaround, one can write:
> (AnnotatedElement)info.reflectAs(Member.class, lookup)
> but it's at best weird.
>
> cheers,
> Rémi
>
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/mlvm-dev/attachments/20131111/d81ac7a2/attachment.html
More information about the mlvm-dev
mailing list