<div dir="ltr">Hi all,<div><br></div><div>Given the following code:</div><div><br></div><div><div>import java.util.ArrayList;</div><div>import java.util.Collection;</div><div><br></div><div>public class Foo {</div><div>    static <T> T foo(Class<T> c, Collection<? super T> baz) {</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">      </span>return null;</div><div>    }</div><div><br></div><div>    static void bar(String c) {</div><div><br></div><div>    }</div><div><br></div><div>    @SuppressWarnings("unchecked")</div><div>    public static void main(String[] args) {</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">  </span>// this works</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">  </span>bar(foo(String.class, new ArrayList<String>()));</div><div><br></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>// this works with a warning</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">   </span>String s = foo(String.class, new ArrayList());</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>bar(s);</div><div><br></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">       </span>// this causes an error on JDK9</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>bar(foo(String.class, new ArrayList()));</div><div>    }</div><div>}</div></div><div><br></div><div>javac 9-ea (build 9-ea+154) fails with this interesting error (on the last line in main, as the comments there indicate):</div><div><br></div><div><div>Foo.java:23: error: method bar in class Foo cannot be applied to given types;</div><div>                bar(foo(String.class, new ArrayList()));</div><div>                ^</div><div>  required: String</div><div>  found: String</div><div>  reason: argument mismatch; Object cannot be converted to String</div><div>1 error</div></div><div><br></div><div>Java 8 compiles fine, and the other 2 lines compile in the same java 9 build as well.</div><div><br></div><div>Is this a javac bug or legit? It seems like a compiler error.  At a minimum, the diagnostic output "required String, found String" is confusing.</div><div><br></div><div>Thanks</div><div><br></div><div><br></div></div>