<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:59 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="">@Joe,<div class=""><br class=""></div><div class="">Yes; but casts can fails in most languages, e.g.:</div><div class=""><br class=""></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class="">func foo() -&gt; Any {<br class="">&nbsp; &nbsp; return 0;<br class="">}<br class=""><br class="">let f = foo() as! Float</blockquote></div></div></blockquote><div><br class=""></div><div>My point was that `static &lt;Output extends Number&gt; Output foo()` in Java is analogous to `func foo&lt;Output&gt;() -&gt; Output` in Swift. In both languages, the Output type variable is chosen by the caller, so can be all possible types matching those constraints.</div><div><br class=""></div><div>-Joe</div></div><br class=""></body></html>