[新聞] Java 14即將發布,正式加入新的Switch表示式

看板Gossiping作者 (文弟)時間4年前 (2020/03/08 14:33), 編輯推噓29(34517)
留言56則, 45人參與, 4年前最新討論串1/1
1.媒體來源: ITHOME 2.記者署名 文/李建興 3.完整新聞標題: Java 14即將發布,正式加入新的Switch表示式 4.完整新聞內文: 依照6個月的發布周期,甲骨文預計在3月17日時釋出Java 14,這個版本有三個主要的更 新,第一個便是在Java 12新增的預覽功能Switch表示式,在Java 14中成熟成為正式功能 ,第二個則是新增的語言功能,為instanceof增加模式配對,第三個則是JVM的功能,提 供有用的NullPointerExceptions訊息。 由於Java舊的Switch表示式有幾個問題,因此官方在Java 12的時候,加入新的Switch表 示式語法預覽版,要讓Switch更好用。Switch表示式語法包含case以及break陳述式,條 件配對由上往下執行,一旦進到特定case中,break陳述式會確保下一個case區塊不會被 執行,但是當開發者忘記寫break,執行流程會繼續往下走,直到碰到下一個break,這個 現象被稱為貫穿(Fall-through)。 而在新的Switch表示式中,使用了新的語法來避免貫穿發生的可能性,因此能夠降低可能 產生臭蟲的機率。新的Switch格式使用Lambda風格的語法,該語法由標籤和回傳值程式碼 間的箭頭組成,但官方強調,這個並非真正的Lambda表示式,只是類似而已。 Java 12之前,Switch表示式中每一個case只能使用一個標籤,因此儘管不同標籤的處理 邏輯相同,仍需要分開寫成兩個case區塊,或是故意利用貫穿現象來達成目的,但是故意 使用貫穿可能會造成誤解,因為在部分情況會難以判斷缺少break陳述式是故意的還是無 意的。而在新的Switch表示式中,現在可以在case使用多個標籤處理這樣的情況。 官方表示,新的Switch表示式也更加詳盡安全,當開發者在Switch中使用enum時,編譯器 會檢查case是否枚舉所有enum中的值,當創建的switch沒有涵蓋所有的值,則會出現編譯 器錯誤,這個錯誤可以提醒開發者處理遺漏的情況。 另外,Switch在Java 12之前只是一個陳述式,而現在則可做為一個表示式使用。官方提 到,陳述式的本質是動作,而表示式的本質則是請求產生一個值,表示式越基本容易理解 ,也會使得程式碼更容易維護。而現在開發者可以把switch撰寫成簡潔的表示式,以更好 地表明程式碼的意圖。 Java 14為instanceof加入模式配對,這個功能可減少有條件instanceof檢查,進行強制 轉換的需要。模式配對是讓開發者能夠測試值的樣子,並在符合特定規則的時候擷取出資 訊,在測試參數以確定其類型時,會經過轉換,並宣告區域變數,以便後續利用特定類型 進行處理。 這個新的語言功能,則是讓開發者從物件中有條件地取出元件變得簡單,使語法更加簡單 可讀,官方表示,這個預覽功能為廣泛的模式配對開了一個門,模式配對的中心思想,就 是要提供一個功能,可以簡單地根據條件,從物件中擷取出元件,而instanceof運算子就 是這樣的功能。 Java 14加入新的JVM功能,讓開發者可以獲取更多可用於診斷錯誤的訊息,在Java 14之 前,NullPointerException訊息含糊不清,無法明確的讓開發者知道程式問題所在,而現 在,訊息至少會包含問題發生的位置以及原因兩類資訊。這項功能不止可用於方法調用, 還可用於其他可能導致NullPointerException的地方,包括欄位存取、陣列存取和賦值。 5.完整新聞連結 (或短網址): https://www.ithome.com.tw/news/136186 6.備註: 聽起來很厲害 不過感覺學生都在學python 可以玩健身環嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.84.204 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1583649220.A.8ED.html

03/08 14:33, 4年前 , 1F
03/08 14:33, 1F

03/08 14:34, 4年前 , 2F
美國一堆寫Java好ㄇ
03/08 14:34, 2F

03/08 14:34, 4年前 , 3F
5樓被甲甲肛過後 就被switch成甲甲了
03/08 14:34, 3F

03/08 14:34, 4年前 , 4F
一定島
03/08 14:34, 4F

03/08 14:34, 4年前 , 5F
健身環缺貨啦幹
03/08 14:34, 5F

03/08 14:35, 4年前 , 6F
健身環 = 清庫存神器
03/08 14:35, 6F

03/08 14:35, 4年前 , 7F
甲骨文等等又來跟你收錢 python安定
03/08 14:35, 7F

03/08 14:35, 4年前 , 8F
JAVA 沒有swtich唷 所以都是if ㄇ
03/08 14:35, 8F

03/08 14:36, 4年前 , 9F
有啦 只是改良而已吼
03/08 14:36, 9F

03/08 14:36, 4年前 , 10F
會綁健身環嗎
03/08 14:36, 10F

03/08 14:38, 4年前 , 11F
大家都在寫python還有人在學java嗎
03/08 14:38, 11F

03/08 14:38, 4年前 , 12F
NullPointerException的log根本垃圾 改
03/08 14:38, 12F

03/08 14:38, 4年前 , 13F
進很棒
03/08 14:38, 13F

03/08 14:38, 4年前 , 14F
反正維護舊系統的碼農又用不到0.0
03/08 14:38, 14F

03/08 14:39, 4年前 , 15F
我都寫if else
03/08 14:39, 15F

03/08 14:39, 4年前 , 16F
買java送switch?
03/08 14:39, 16F

03/08 14:39, 4年前 , 17F
結果Python也沒有switch啊
03/08 14:39, 17F

03/08 14:40, 4年前 , 18F
要用switch也是得迂迴處理
03/08 14:40, 18F

03/08 14:40, 4年前 , 19F
我還在8…
03/08 14:40, 19F

03/08 14:41, 4年前 , 20F
Switch概念股開噴
03/08 14:41, 20F

03/08 14:41, 4年前 , 21F
java和python誰可以撐最久= =
03/08 14:41, 21F

03/08 14:41, 4年前 , 22F
過氣語言要學人家賣健身環了齁
03/08 14:41, 22F

03/08 14:42, 4年前 , 23F
switch缺貨大漲 還好過年時買了 嘻嘻
03/08 14:42, 23F

03/08 14:43, 4年前 , 24F
還不是靠健身環 今年一定島
03/08 14:43, 24F

03/08 14:43, 4年前 , 25F
不過這篇報導還真專業 這是工程師寫的吧
03/08 14:43, 25F

03/08 14:43, 4年前 , 26F
沒人在用了啦
03/08 14:43, 26F

03/08 14:43, 4年前 , 27F
為什麼只有Switch有新的表示式,PS呢? (?
03/08 14:43, 27F

03/08 14:45, 4年前 , 28F
還不是靠我婆結衣
03/08 14:45, 28F

03/08 14:49, 4年前 , 29F
理工宅寫新聞?
03/08 14:49, 29F

03/08 14:49, 4年前 , 30F
現在很多學校都教python欸
03/08 14:49, 30F

03/08 14:50, 4年前 , 31F
java8 再戰10年
03/08 14:50, 31F

03/08 14:51, 4年前 , 32F
轉kotlin了
03/08 14:51, 32F

03/08 14:51, 4年前 , 33F
不過現在網路上最推薦的資料結構和演算法
03/08 14:51, 33F

03/08 14:51, 4年前 , 34F
課程都是Java 的
03/08 14:51, 34F

03/08 14:54, 4年前 , 35F
糞語言
03/08 14:54, 35F

03/08 14:55, 4年前 , 36F
都轉kotlin了
03/08 14:55, 36F

03/08 15:00, 4年前 , 37F
.NET: 當我塑膠做的?
03/08 15:00, 37F

03/08 15:16, 4年前 , 38F
目前java還是要會阿,很多經典書籍都是
03/08 15:16, 38F

03/08 15:17, 4年前 , 39F
java的。
03/08 15:17, 39F

03/08 15:17, 4年前 , 40F
現在連裝個jdk都要註冊
03/08 15:17, 40F

03/08 15:23, 4年前 , 41F
這網站的人中文普遍很差,常常會有一種工三
03/08 15:23, 41F

03/08 15:23, 4年前 , 42F
小的感覺
03/08 15:23, 42F

03/08 15:41, 4年前 , 43F
C# : 嫩
03/08 15:41, 43F

03/08 15:42, 4年前 , 44F
裝open source版jdk就好啦 幹嘛裝Ora
03/08 15:42, 44F

03/08 15:42, 4年前 , 45F
cle的?
03/08 15:42, 45F

03/08 16:02, 4年前 , 46F
我都用很北七的IF ELSE一直套
03/08 16:02, 46F

03/08 16:36, 4年前 , 47F
沒搭上AI熱潮真的失策,RIP
03/08 16:36, 47F

03/08 17:02, 4年前 , 48F
過氣語言無誤 被python js屌打
03/08 17:02, 48F

03/08 17:40, 4年前 , 49F
沒空
03/08 17:40, 49F

03/08 17:52, 4年前 , 50F
裝JDK幹嘛註冊,勾勾勾起來就能載了
03/08 17:52, 50F

03/08 18:44, 4年前 , 51F
媽我8都還沒學完
03/08 18:44, 51F

03/08 19:18, 4年前 , 52F
剩老人在用吧 年輕人連學都不想
03/08 19:18, 52F

03/08 23:13, 4年前 , 53F
欸不是 我用 switch 就是希望有時可以
03/08 23:13, 53F

03/08 23:14, 4年前 , 54F
繼續執行下去 R
03/08 23:14, 54F

06/05 15:36, 4年前 , 55F
樓上這種流程還滿奇怪的..switch應該只執行其中一個選項
06/05 15:36, 55F

06/05 15:37, 4年前 , 56F
而已....但如果你真要堅持還是可以用傳統方式寫程式
06/05 15:37, 56F
文章代碼(AID): #1UP974Zj (Gossiping)