您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Java 8語法上有什么改變”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Java 8語法上有什么改變”這篇文章吧。
鑒于Java 7 SE(標準版)現已正式發布,甲骨文和Java社區進程組織(JCP)的成員們已開始仔細考慮為這種編程語言的下一個版本Java SE 8添加什么功能特性。前段時間曝光將為Java 8提上議程的工作是:設計面向云計算的Java。近日又有提出了對Java 8語法上的改變:Java 8 將采用跟C#一樣的Lambda句法。
lambda-dev在郵件列表宣布,Java的Lambda語法決定基于C#語法。這種語法在C#語言里已經使用很長時間了(C#在1.0時期便引入了委托類型,并在2.0里支持匿名函數,3.0對Lambda表達式提供支持)。
這種語法同時支持表達式和代碼塊。表示式的形式不需要大括號,并且在執行后返回結果。語法塊的形式需要使用大括號,除非使用了return關鍵字,否則不會直接返回結果。郵件里也給出了示例:
C#的語法是:
lambda = ArgList Arrow Body ArgList = Identifier | "(" Identifier [ "," Identifier ]* ")" | "(" Type Identifier [ "," Type Identifier ]* ")" Body = Expression | "{" [ Statement ";" ]+ "}"
這里是使用lambda表達式這種語法的一些例子:
x => x + 1 (x) => x + 1 (int x) => x + 1 (int x, int y) => x + y (x, y) => x + y (x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); } () => { System.out.println("I am a Runnable"); }
Lambda表達式的關鍵優勢,在于它們會對參數進行類型推斷。不過在某些情況下,編譯器依然無法推斷出正確類型(尤其是出現操作符重載的時候,例如:(x, y) => x + y 在Java編譯器不知道x和y是int還是double時候)。一般來說,類型推斷引擎都能自動得出正確的代碼,如果需要更多提示,程序員也始終可以顯示地增加類型信息。
以上是“Java 8語法上有什么改變”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。