持續進化中的switch語法

潘家羲 Sparrow Pan

  • 精誠資訊/恆逸教育訓練中心-資深講師
  • 技術分類:程式設計

 

 

在Java程式開發中,當程式邏輯需要大量if-else做決策判斷時,switch-case決策語法可以適時改善if-else語法帶來的不便與缺點。然而傳統的switch語法即便在Java SE5加入了enum的切換、在Java SE7加入了String的切換,當程式需要切換的case一多,switch語法還是讓人覺得笨重、缺乏彈性。來看一段傳統的switch語法:

我們可以清楚的看到,當多個case要執行相同的程式邏輯時,傳統的switch語法需要重複撰寫一大堆case的宣告,每個case還得重複夾帶”:”分號,同時還需要適當加上break語法以中斷switch。

Java 12終於開始對傳統switch-case語法的缺點進行改造跟簡化,除了引進Lambda語法的支援,更可將多個case藉由”,”逗點進行合併宣告如下:

在上述的程式片段中,新的switch-case語法改由 ”case ->” Lambda式的表示語法,除了可以省去break語法的需求,”case 1, 3, 5, 7, 8, 10, 12 ->”合併式宣告更是簡化到讓人激賞,我們終於不用像以往需要撰寫一大堆”case”跟”:”分號。而更進一步,上述的範例是為了在不同的case情況下指派不同的值給numberOfDays,由於新一代的switch語法可支援回傳值,”-> 31;”箭頭後面即代表switch的回傳值,因此,我們可以將整個switch語法指派給numberOfDays如下:

新的swtich-case語法是不是讓程式變得更簡潔、更賞心悅目了呢?