|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。Java8里最主要的更新之一即是引进了Lambda语法,如许能够将匿名函数作为参数或变量。但是,这方面的语法一直未能断定上去,也已经有过投票,征询社区更顺应哪一种语法。
比来,lambda-dev在邮件列表公布,Java的Lambda语法决意基于C#语法。这类语法在C#言语里已利用很长工夫了(C#在1.0时代便引进了托付范例,并在2.0里撑持匿名函数,3.0对Lambda表达式供应撑持)。
从查询拜访了局来看,其他一些语法选择(比方BGGA)绝对其余计划并没有体现出分明的上风。而在C#和Scala中已长工夫利用的语法体验,意味着会有大批程序员已熟习此类语法了(C#和Scala的次要区分,在于匿名函数的参数怎样标识其范例:C#利用“intfoo”,而Scala利用“foo:int”——人们很简单顺应这类渺小区分。Java会利用C#的情势“intfoo”,由于这已是Java言语的暗示办法了)。我们举行了很普遍的探究,可是终极发明没有哪一种选择是分明的赢家(每种情势都有好的方面和不那末好的方面,也没有哪一种情势分明好过其他的)。因而,与从头创造一种新的语法比拟,我们以为仍是选择一种在两种和Java对照类似的言语里——C#和Scala——已失掉证实的语法对照符合。 这类语法同时撑持表达式和代码块。暗示式的情势不必要年夜括号,而且在实行后前往了局。语法块的情势必要利用年夜括号,除非利用了return关头字,不然不会间接前往了局。邮件里也给出了示例:- x=>x+1(x)=>x+1(intx)=>x+1(intx,inty)=>x+y(x,y)=>x+y(x,y)=>{System.out.printf("%d+%d=%d%n",x,y,x+y);}()=>{System.out.println("IamaRunnable");}
复制代码 Lambda表达式的关头上风,在于它们会对参数举行范例揣度。不外在某些情形下,编译器仍然没法揣度出准确范例(特别是呈现操纵符重载的时分,比方:(x,y)=>x+y在Java编译器不晓得x和y是int仍是double时分)。一样平常来讲,范例揣度引擎都能主动得出准确的代码,假如必要更多提醒,程序员也一直能够显现地增添范例信息。
不久的未来会公布撑持新语法的编译器以供体验。
译者赵的网名为老赵,洋名JeffreyZhao,写有手艺博客“老赵点滴”。存眷前沿手艺,并努力于开源社区与微软平台的组合优化。
不得不提一下的是:.net网页编程是看到java红,而开发出来的工具。 |
|