<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 <<a href="mailto:howard.lovatt@gmail.com" class="">howard.lovatt@gmail.com</a>> 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() -> Any {<br class=""> 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 <Output extends Number> Output foo()` in Java is analogous to `func foo<Output>() -> 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>