java7和java8切换_切换表达式到Java吗?
java7和java8切換
已創建一個標題為“ Java語言的開關表達式”的JEP草案 。 當前的“摘要”狀態為:“擴展switch語句,以便可以將其用作語句或表達式,并改善switch處理null的方式。 這些將簡化日常編碼,并為在switch使用模式匹配做好準備。” 除了啟用令人興奮的模式匹配JEP(305)之外,所提議的Java switch表達式本身還具有一些有希望的特征。
Java教程將Java 語句定義為“大致執行單元”,“大致等同于自然語言中的句子”。 它將Java 表達式定義為“由變量,運算符和方法調用組成的構造,其結果為單個值。” 當前的Java switch是一條語句 ,但是JEP草案建議將switch也作為表達式來支持。
JEP的Switch Expression草案在其“動機”部分指出:“當我們準備增強Java語言以支持模式匹配時 ,現有的switch語句的一些不規則性(長期以來一直困擾著用戶)成為障礙。” JEP草案具有很高的可讀性,并包含有趣的討論點和說明性的代碼示例,這些示例說明Java switch語句當前在其他Java構造函數中通常如何有效地用作表達式。 JEP草案顯示了將switch擴展為用作表達式的提議,以及作為語句得到支持的提議,將如何提高代碼的可讀性和可維護性。
Java表達式需要“求值為單個值”。 當前提出的switch表達式將允許break關鍵字充當Java方法中的return 。 可以在break關鍵字之后指定一個值,并且該值將從switch表達式中“返回”。
因為Java 表達式 “求值為單個值”,所以必須使用用作表達式的Java switch來提供默認值。 JEP草案中涵蓋的一個有趣的轉折是枚舉。 JEP草案指出:“……對于涵蓋所有已知情況的枚舉switch表達式(最終,通過密封類型的switch表達式),編譯器可以插入默認子句,指示枚舉定義在兩次編譯之間已更改時間和運行時間。 (這是開發人員今天手動執行的操作,但是與手工編寫的相比,讓編譯器插入它既不那么具有侵入性,又可能具有更具描述性的錯誤消息。)“我發現這特別有趣,因為我已經看到很多情況了在這種情況下,開發人員未為枚舉上的switch編寫“默認值”,因為當時所有的枚舉值都被case s覆蓋,或者編寫了非常通用的錯誤消息。 實際上,碰到后者的多個示例最終使我寫了博客文章“ Log Unexpected Switch Options” 。
JEP草案還涵蓋了一些建議的增強功能,這些功能將使當前的switch語句和新的switch表達式都受益。 其中之一就是能夠指示如何處理傳遞給switch語句的null引用類型。 例如,今天,如果將null String傳遞給switch語句,則會引發NullPointerException 。 有了這個建議,開發人員可以指定case null子句。 當前的提議將處理任何未明確處理的null因為今天在switch會處理null (通過拋出NullPointerException )。
針對當前switch語句和擬議的switch表達式提出的第二個有益特征是允許單個case子句支持多個以逗號分隔的潛在匹配值。 可以使用單個case而不是使用共享單個break三個case子句指定適用于相同行為的三個值。
“切換表達式草稿”仍然是一個草稿,甚至沒有為其分配編號,因此很容易受到潛在更改的影響。 確實,該建議已在郵件列表中進行了討論,并進行了相當多的修改,例如“ 切換表達式-一些修訂” 。 我在郵件列表中發現一條消息“ 切換float / double / long ”特別有趣。 這個有趣的消息是完整的,技術的或歷史的細節,包括為何今天的switch語句不能long支持的背景,以及“居民浮點專家” Joe Darcy提供的有關浮點比較的有趣分析。
David Goldberg在1991年發表的文章“ 每位計算機科學家都應了解的浮點算術 ”是了解浮點算術和表示法復雜性的著名資源。 達西(Darcy)對這些問題和IEEE 754浮點提供了一些有趣的見解。 他寫道:“為了解決對浮點數的一些常見誤解,盡管通常建議*不要*比較浮點數是否相等,但是進行此類比較的定義非常明確,但可能并不能滿足您的要求。” Darcy處理NaN ,正零和負零以及正無窮大和負無窮大的處理。 一個有趣的結論是,可以實現允許switch浮點數字類型float來真正打開Float.floatToIntBits(float)提供的值 。
如果對Java的switch進行擴展,以便除了當前用作語句之外,還可以將其用作表達式,則看起來可能會有激動人心的時刻。 這是一個可以導致代碼更干凈,出錯空間更少的開發。
翻譯自: https://www.javacodegeeks.com/2017/12/switch-expressions-coming-java.html
java7和java8切換
總結
以上是生活随笔為你收集整理的java7和java8切换_切换表达式到Java吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ene的参数设置(ene的参数设置多少合
- 下一篇: 所有窗口最小化快捷键(所有窗口最小化快捷