[resteasy-dev] Lambda question
Ron Sigal
rsigal at redhat.com
Mon Apr 3 13:11:38 EDT 2017
This question arises in https://issues.jboss.org/browse/RESTEASY-1209
"org.jboss.resteasy.util.Types#getActualTypeArgumentsOfAnInterface not
working for lambda's." The reporter wants to do this:
> ResteasyProviderFactory factory = new ResteasyProviderFactory();
> factory.register((ContextResolver<String>) type -> "foo bar");
but it doesn't work. I find that if I do this:
> ContextResolver<String> resolver1 = new
> ContextResolver<String>() {
>
> @Override
> public String getContext(Class<?> type)
> {
> return null;
> }
> };
> for (Type type : resolver1.getClass().getGenericInterfaces())
> {
> System.out.println(type);
> }
I get
> javax.ws.rs.ext.ContextResolver<java.lang.String>
but if I do
> ContextResolver<String> resolver2 = type -> "foo";
> for (Type type : resolver2.getClass().getGenericInterfaces())
> {
> System.out.println(type);
> }
I get
> interface javax.ws.rs.ext.ContextResolver
Same with
> ContextResolver<String> resolver2 =
> ((ContextResolver<String>)type -> "foo");
So, it seems that, for lambdas, Java doesn't keep the implementation
type and value of the type variable at run time. Does anyone have any
ideas or tricks?
Thanks,
Ron
--
My company's smarter than your company (unless you work for Red Hat)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/resteasy-dev/attachments/20170403/b7c9ceee/attachment.html
More information about the resteasy-dev
mailing list