国产毛多水多高潮高清,久热这里只有精品视频6,国内精品久久久久久久久电影网,国产男同志CHINA69,精品999日本久久久影院,人人妻人人澡人人爽人人精品,亚洲中文无码永久免

详解 Java 17 中的模式匹配(Pattern Matching)-NBA下注平台登录

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

2026-01-18 05:18:20投稿人:新時(shí)代賭城最佳在線(xiàn)345288(呂梁)有限公司圍觀1751863 評(píng)論

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

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

什么是模式匹配 ?

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

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();    }  }}

上述對(duì) instanceof 操作符的使用就是模式匹配的一種簡(jiǎn)單形式。

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

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

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

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

Java版本

instanceof 模式

switch 的模式匹配

記錄類(lèi)型模式

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 操作符用來(lái)檢查對(duì)象的類(lèi)型。下面的代碼給出了通常使用 instanceof 操作符的代碼范式。在 if 語(yǔ)句中使用 instanceof 來(lái)進(jìn)行檢查 ,如果檢查通過(guò),則使用強(qiáng)制類(lèi)型轉(zhuǎn)換,把輸入對(duì)象 obj 轉(zhuǎn)換成 String 類(lèi)型的 s ,最后再使用變量 s。

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

從上述代碼中可以看到