乱人伦 国语对白海角社区,五月激情丁香婷婷综合中文字幕,欧美伊人婷婷久久五月综合,亚洲精品无amm毛片,亚洲男人第一无码AV网站,国产日韩欧美丝袜一区二区,亚洲一区精品在线观看

详解 Java 17 中的模式匹配(Pattern Matching)-HAOWIN体育官网下载

详解 Java 17 中的模式匹配(Pattern Matching)

2026-01-18 16:47:15投稿人:海德體育買球(文昌)有限公司圍觀5663 評論

詳解 Java 17 中的模式匹配(Pattern Matching)

提到模式匹配(Pattern Matching) ,Java 開發(fā)人員可能會比較陌生。實際上,其他編程語言的開發(fā)人員早就已經(jīng)使用過模式匹配了 。JVM 上的編程語言 Scala 的模式匹配功能就很強大。

什么是模式匹配?

為了更好地解釋模式匹配,我們從一個簡單的例子開始  。我們希望創(chuàng)建一個方法 ,可以把任何對象轉(zhuǎn)換成 String 格式 。這就需要根據(jù)對象的類型來進行不同的格式化操作 。我們可以很容易就寫出下面這樣的代碼 。這段代碼的核心是使用 instanceof 操作符來檢查輸入對象的類型,再根據(jù)對象類型進行格式化操作 。

public class ObjectFormatter {   public String format(Object input) {     if (input == null) {       return "";    } else if (input instanceof Number) {       return NumberFormat.getNumberInstance().format(input);    } else if (input instanceof LocalDateTime) {       return ((LocalDateTime) input).format(DateTimeFormatter.ISO_DATE_TIME);    } else {       return input.toString();    }  }}

上述對 instanceof 操作符的使用就是模式匹配的一種簡單形式。

一個模式由匹配 predicate 和模式變量的集合組成 。

  • 匹配 predicate 判斷一個模式是否可以匹配目標(biāo)對象 。
  • 如果模式匹配的話,模式變量的集合用來從目標(biāo)對象中提取值 。

在 instanceof 操作符的例子中,匹配 predicate 的作用是檢查目標(biāo)對象的類型,而模式變量的集合中只有一個變量 ,就是目標(biāo)對象自身。這種類型的模式,被稱為類型模式(type pattern) 。除了類型模式之外,計劃中的模式還包括記錄類型模式和數(shù)組模式。

模式匹配是一個涵蓋范圍非常大的功能 。根據(jù)現(xiàn)在 Java 的發(fā)布周期 ,模式匹配的內(nèi)容會在不同的 Java 版本中逐漸添加進來 。具體的發(fā)布周期可以參考下面的表格 。這個表格的右側(cè)三列表示的是不同的與模式匹配相關(guān)的功能 ,每一行表示這些功能在對應(yīng) Java 版本中的可用狀態(tài)。

Java版本

instanceof 模式

switch 的模式匹配

記錄類型模式

Java 14

預(yù)覽



Java 15

二次預(yù)覽



Java 16

正式功能



Java 17

正式功能

預(yù)覽


Java 18

正式功能

二次預(yù)覽


Java 19

正式功能

三次預(yù)覽

預(yù)覽

以 Java 17 為例,可以使用 instance 模式的正式功能 ,以及 switch 模式匹配的預(yù)覽功能 。

Java 18 和 Java 19 中可用的模式匹配功能也列在了表格中,作為參考。

instanceof 模式匹配

Java 中的 instanceof 操作符用來檢查對象的類型。下面的代碼給出了通常使用 instanceof 操作符的代碼范式。在 if 語句中使用 instanceof 來進行檢查 ,如果檢查通過,則使用強制類型轉(zhuǎn)換,把輸入對象 obj 轉(zhuǎn)換成 String 類型的 s,最后再使用變量 s  。

if (obj instanceof String) {   String s = (String) obj;}

從上述代碼中可以看到,對 instanceof 操作符的使用范式是非常繁瑣的 ,其中需要檢查的目標(biāo)類型 String 就出現(xiàn)了三次。在使用了 instanceof 模式匹配之后