<div dir="ltr">@Joe,<div><br></div><div>Yes; but casts can fails in most languages, e.g.:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">func foo() -&gt; Any {<br>    return 0;<br>}<br><br>let f = foo() as! Float</blockquote><div>










<p class=""><span class=""></span></p>
</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature">  -- Howard.<br></div></div>
<br><div class="gmail_quote">On 11 March 2016 at 08:37, Joe Groff <span dir="ltr">&lt;<a href="mailto:jgroff@apple.com" target="_blank">jgroff@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><br><div><blockquote type="cite"><div>On Mar 10, 2016, at 1:34 PM, Howard Lovatt &lt;<a href="mailto:howard.lovatt@gmail.com" target="_blank">howard.lovatt@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr">@Thorsten,<div><br></div><div>No it doesn&#39;t, the following Java code:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div>public class GenericReturnTypes {</div></div><div><div>  interface Foo {</div></div><div><div>    static &lt;Output extends Number&gt; Output foo() {</div></div><div><div>      return (Output)(new Integer(0));</div></div><div><div>    }</div></div><div><div>  }</div></div><div><div>  public static void main(String[] args) {</div></div><div><div>    System.out.println(Foo.foo());</div></div><div><div>  }</div></div><div><div>}</div></div></blockquote><div> </div><div>Compiles without error or warning, runs, and prints 0.</div></div></div></blockquote><br></div></span><div>This works by inferring Output == Number. This also unsafely allows &#39;Float foo = Foo.foo();&#39;, which would fail the cast.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-Joe</div><br></font></span></div></blockquote></div><br></div>