日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

玩JDK 12的Switch表达式

發(fā)布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩JDK 12的Switch表达式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在博客文章“操作中的JDK語言功能預(yù)覽:切換表達式 ”中,我討論了JEP 325 [“切換表達式( 預(yù)覽 )”)如何作為指定的“ 預(yù)覽語言功能 ”的早期應(yīng)用,如JEP 12所述。預(yù)覽語言和VM功能”]。 JEP 325 適用于JDK 12 。 更好的是, JDK 12的搶先體驗版已經(jīng)提供了對該預(yù)覽語言功能的支持!

正如我以前的博客文章“ Switch Expressions Coming to Java? ”中所展示的那樣,我對與switch表達式相關(guān)的可能性感到很興奮。 ”,“ 通過引入switch表達式來增強Java switch語句 ”以及前面提到的“ JDK語言功能預(yù)覽:Switch表達式” 。 JDK 12 Early Access Builds使得開始嘗試使用此預(yù)覽語言功能變得非常容易,我將使用JDK 12 Early Access Build 10(2018/9/6) [本文撰寫時的最新版本]進行演示。

我將花費大量精力來準(zhǔn)備JEP 325本身(在“描述”部分的早期)中提供的其中一個示例,而不是花任何額外的精力來提出我自己的開關(guān)表達式的創(chuàng)意示例。 此示例實際上是增強的switch 語句,而不是switch 表達式 ,但是它需要相同的語言預(yù)覽支持,并且是該功能的一部分。 接下來顯示該修改示例的代碼清單。

package dustin.examples.jdk12.switchexp;public class SwitchExpressionsDemo {/*** This example is adopted from the JEP 325 text* (http://openjdk.java.net/jeps/325).** @param k Value to be switched upon.*/static void howMany(final int k){switch (k){case 1 -> System.out.println("one");case 2 -> System.out.println("two");case 3 -> System.out.println("many");}}/*** Execute demonstration discussed in JEP 325 using custom* method {@link #howMany(int)}.*/public static void demonstrateHowMany(){howMany(1);howMany(2);howMany(3);}public static void main(final String[] arguments){demonstrateHowMany();} }

當(dāng)我嘗試使用不帶任何特殊標(biāo)志的JDK 12 javac編譯器編譯以上代碼時,我看到錯誤消息:“錯誤:切換規(guī)則是預(yù)覽功能,默認情況下處于禁用狀態(tài)。” 該錯誤消息還提供了有用的提示:“(使用--enable-preview啟用切換規(guī)則)”。

將--enable-preview標(biāo)志傳遞給JDK 12 javac編譯器使我克服了剛剛顯示的錯誤,但是隨后提醒我,-- --enable-preview標(biāo)志應(yīng)與-source標(biāo)志或--release標(biāo)志。 錯誤消息明確指出:“錯誤: --enable-preview --release --enable-preview必須與-source或--release一起使用。

我選擇將--release 12標(biāo)志與--enable-preview結(jié)合使用,并允許編譯增強的switch語句演示示例。

增強的switch語句示例使用傳遞給JDK 12 javac編譯器的--enable-preview和--release 12選項進行編譯,但是如最后一個屏幕快照中的輸出所示,有一條消息指出已編譯的類“使用預(yù)覽語言功能”,并建議“使用-Xlint:preview重新編譯以獲取詳細信息”。 下一個屏幕快照演示了指定-Xlint:preview的結(jié)果:

在編譯開關(guān)表達式演示示例時,將-Xlint:preview標(biāo)志傳遞給JDK 12 javac編譯器時,導(dǎo)致使用開關(guān)表達式( ->語法)指向指向特定代碼行的三條警告消息,并指出“警告:[preview]切換規(guī)則是一種預(yù)覽功能,在將來的版本中可能會刪除。”

通過增強的switch語句代碼編譯,現(xiàn)在可以嘗試運行該代碼了。 如果在沒有任何標(biāo)志指示使用預(yù)覽功能的情況下調(diào)用JDK 12 java啟動器,則會顯示錯誤消息:“ java.lang.UnsupportedClassVersionError:未啟用預(yù)覽功能……嘗試使用'-enable-preview'運行。”

當(dāng)--enable-preview傳遞給JDK 12 java啟動器時,演示將成功運行,如下一個屏幕快照所示。

將最后一個屏幕快照中顯示的輸出與本文開頭闡述的增強的switch語句演示的源代碼進行比較時,可以快速地進行一些觀察。 也許最引人注目的是,有沒有break的例子說明,但沒有落空發(fā)生盡管沒有break的陳述。 這正是開關(guān)表達式和增強型開關(guān)語句應(yīng)發(fā)生的JEP 325狀態(tài):“如果匹配了標(biāo)簽,則僅執(zhí)行箭頭標(biāo)簽右側(cè)的表達式或語句;否則,僅執(zhí)行箭頭標(biāo)簽右側(cè)的表達式或語句。 沒有失敗。” “箭頭”(->)的存在表示我們正在使用switch表達式或增強型switch語句,其中表達式或語句將完全由“ arrow”右邊的內(nèi)容來解析(因此,沒有明顯的break是需要)。 在switch表達式或增強的switch語句中帶有“分號”(而不是“箭頭”)和相關(guān)的break的出現(xiàn)允許指定多行。

還有更多與開關(guān)表達式和增強型switch語句有關(guān)的內(nèi)容,并可以進行嘗試。 但是,本文著重介紹了JDK 12早期訪問版本中開關(guān)表達式的可用性和增強的開關(guān)語句支持,并提供了該支持的簡單示例。 開始使用Java開關(guān)表達式和增強的開關(guān)語句非常令人興奮! 考慮一個沒有切換失敗的世界也是令人興奮的! 這只是JDK 12的“預(yù)覽”功能,但是我很期待切換失敗的開始。

翻譯自: https://www.javacodegeeks.com/2018/09/playing-with-jdk-12s-switch-expressions.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的玩JDK 12的Switch表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。