※ 本文為 zbali.bbs. 轉寄自 ptt.cc 更新時間: 2020-03-08 14:42:28
看板 Gossiping
作者 Jyery (文弟)
標題 [新聞] Java 14即將發布,正式加入新的Switch表
時間 Sun Mar  8 14:33:37 2020


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
Java 14即將發布,正式加入新的Switch表示式 | iThome
新的Switch表示式改變了撰寫語法,能夠減少臭蟲發生的可能性,也讓寫法更簡潔 ...

 

6.備註:

聽起來很厲害 不過感覺學生都在學python


可以玩健身環嗎

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.84.204 (臺灣)
※ 文章代碼(AID): #1UP974Zj (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1583649220.A.8ED.html
WolfTeacher: 糞1F 180.176.0.145 台灣 03/08 14:33
shiauji: 美國一堆寫Java好ㄇ2F 114.137.192.162 台灣 03/08 14:34
tetani: 5樓被甲甲肛過後 就被switch成甲甲了3F 36.239.61.5 台灣 03/08 14:34
soarling: 一定島4F 118.161.191.11 台灣 03/08 14:34
b2305911: 健身環缺貨啦幹5F 110.26.107.131 台灣 03/08 14:34
t81511270: 健身環 = 清庫存神器6F 1.165.67.32 台灣 03/08 14:35
iamfenixsc: 甲骨文等等又來跟你收錢  python安定7F 111.251.138.37 台灣 03/08 14:35
t81511270: JAVA 沒有swtich唷 所以都是if ㄇ8F 1.165.67.32 台灣 03/08 14:35
shiauji: 有啦 只是改良而已吼9F 114.137.192.162 台灣 03/08 14:36
starericc: 會綁健身環嗎10F 39.8.190.64 台灣 03/08 14:36
roy2142: 大家都在寫python還有人在學java嗎11F 27.247.129.119 台灣 03/08 14:38
kevin0316: NullPointerException的log根本垃圾 改12F 223.136.123.125 台灣 03/08 14:38
kevin0316: 進很棒
Arctica: 反正維護舊系統的碼農又用不到0.014F 122.116.62.214 台灣 03/08 14:38
fungsui: 我都寫if else15F 39.12.163.31 台灣 03/08 14:39
crossmyheart: 買java送switch?16F 123.194.180.46 台灣 03/08 14:39
liquidbox: 結果Python也沒有switch啊17F 61.230.106.140 台灣 03/08 14:39
liquidbox: 要用switch也是得迂迴處理
anonymitet: 我還在8…19F 36.238.137.173 台灣 03/08 14:40
milkBK: Switch概念股開噴20F 114.34.189.70 台灣 03/08 14:41
Nravir: java和python誰可以撐最久= =21F 111.241.40.222 台灣 03/08 14:41

--
※ 看板: ott 文章推薦值: 0 目前人氣: 0 累積人氣: 51 
作者 Jyery 的最新發文:
點此顯示更多發文記錄
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇