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

详解 Java 17 中的模式匹配(Pattern Matching)-世界排名买球平台

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

2026-01-18 16:57:00投稿人:體育外圍軟件(太原)有限公司圍觀115463 評(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ù)覽功能