<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>This question arises in
      <a class="moz-txt-link-freetext" href="https://issues.jboss.org/browse/RESTEASY-1209">https://issues.jboss.org/browse/RESTEASY-1209</a>
      "org.jboss.resteasy.util.Types#getActualTypeArgumentsOfAnInterface
      not working for lambda's." The reporter wants to do this:</p>
    <p><br>
    </p>
    <p>
      <blockquote type="cite">
        <pre style="font-size: 1em; margin: 0 10px;   width: auto; padding: 0;"><span style="color: black; font-family: 'Consolas', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;">        ResteasyProviderFactory factory = new ResteasyProviderFactory();</span></pre>
        <pre style="font-size: 1em; margin: 0 10px;   width: auto; padding: 0;"><span style="color: black; font-family: 'Consolas', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;">        factory.register((ContextResolver&lt;String&gt;) type -&gt; "foo bar");</span></pre>
      </blockquote>
      <br>
    </p>
    but it doesn't work. I find that if I do this:<br>
    <br>
    <blockquote type="cite">          ContextResolver&lt;String&gt;
      resolver1 = new ContextResolver&lt;String&gt;() {<br>
      <br>
                   @Override<br>
                   public String getContext(Class&lt;?&gt; type)<br>
                   {<br>
                      return null;<br>
                   } <br>
                 };<br>
                 for (Type type :
      resolver1.getClass().getGenericInterfaces())<br>
                 {<br>
                    System.out.println(type);<br>
                 }</blockquote>
    <br>
    I get<br>
    <br>
    <blockquote type="cite">javax.ws.rs.ext.ContextResolver&lt;java.lang.String&gt;</blockquote>
    <br>
    but if I do<br>
    <br>
    <blockquote type="cite">           ContextResolver&lt;String&gt;
      resolver2 = type -&gt; "foo";<br>
                 for (Type type :
      resolver2.getClass().getGenericInterfaces())<br>
                 {<br>
                    System.out.println(type);<br>
                 }</blockquote>
    <br>
    I get<br>
    <br>
    <blockquote type="cite">interface javax.ws.rs.ext.ContextResolver</blockquote>
    <br>
    Same with<br>
    <br>
    <blockquote type="cite">           ContextResolver&lt;String&gt;
      resolver2 = ((ContextResolver&lt;String&gt;)type -&gt; "foo");</blockquote>
    <br>
    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?<br>
    <br>
    Thanks,<br>
    Ron<br>
    <br>
    <br>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
My company's smarter than your company (unless you work for Red Hat)</pre>
  </body>
</html>