<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 10, 2016, at 1:34 PM, Howard Lovatt &lt;<a href="mailto:howard.lovatt@gmail.com" class="">howard.lovatt@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">@Thorsten,<div class=""><br class=""></div><div class="">No it doesn't, the following Java code:</div><div class=""><br class=""></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class=""><div class="">public class GenericReturnTypes {</div></div><div class=""><div class="">&nbsp; interface Foo {</div></div><div class=""><div class="">&nbsp; &nbsp; static &lt;Output extends Number&gt; Output foo() {</div></div><div class=""><div class="">&nbsp; &nbsp; &nbsp; return (Output)(new Integer(0));</div></div><div class=""><div class="">&nbsp; &nbsp; }</div></div><div class=""><div class="">&nbsp; }</div></div><div class=""><div class="">&nbsp; public static void main(String[] args) {</div></div><div class=""><div class="">&nbsp; &nbsp; System.out.println(Foo.foo());</div></div><div class=""><div class="">&nbsp; }</div></div><div class=""><div class="">}</div></div></blockquote><div class="">&nbsp;</div><div class="">Compiles without error or warning, runs, and prints 0.</div></div></div></blockquote><br class=""></div><div>This works by inferring Output == Number. This also unsafely allows 'Float foo = Foo.foo();', which would fail the cast.</div><div><br class=""></div><div>-Joe</div><br class=""></body></html>