亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java21新特性Record?Patterns示例詳解

 更新時間:2023年09月22日 10:02:24   作者:程序猿DD  
這篇文章主要為大家介紹了Java21新特性Record?Patterns示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Record Patterns

Record Patterns 第一次發(fā)布預(yù)覽是在JDK 19、隨后又在JDK 20中進行了完善。現(xiàn)在,Java 21開始正式推出該特性優(yōu)化。下面我們通過一個例子來理解這個新特性。

record Point(int x, int y) {}
static void printSum(Object obj) {
    if (obj instanceof Point p) {
        int x = p.x();
        int y = p.y();
        System.out.println(x+y);
    }
}

上述代碼中定義了一個名為Point的record類(Java 16中的新特性),如果我們想要獲取、操作或者打印Point中的x和y的話。就不得不先完成類型判斷和類型轉(zhuǎn)換。所以,這里為了實現(xiàn)x+y總共需要4行代碼。而在Java 21之后,只需要2行代碼就能完成:

static void printSum(Object obj) {
    if (obj instanceof Point(int x, int y)) {
        System.out.println(x+y);
    }
}

可以看到,類型判斷、類型轉(zhuǎn)換、record值的結(jié)構(gòu)都一氣呵成了,所以代碼量得到了簡化。

嵌套record的解構(gòu)

假設(shè)有下面一組嵌套的record結(jié)構(gòu)(WindowFrame中包含了PointSize):

record Size(int width, int height) { }
record Point(int x, int y) { }
record WindowFrame(Point origin, Size size) { }

這個時候,如果想要訪問WindowFrameSize的height,根據(jù)之前案例的理解,我們可以這樣寫:

if (obj instanceof WindowFrame wf) {
  if (wf.size() != null) {
    System.out.println("Height: " + wf.size().height());
  }
}

好像也沒有很簡單,但實際上還有更簡單的寫法,因為record的解構(gòu)是可以嵌套的,直接這樣一步完成即可:

if (obj instanceof WindowFrame(Point origin, Size(int width, int height))) {
    System.out.println("Height: " + height);
}

是不是一下感受到這個新特性的強大了?

以上就是Java21新特性Record Patterns的詳細內(nèi)容,更多關(guān)于Java Record Patterns的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Maven的使用之繼承與聚合

    Maven的使用之繼承與聚合

    這篇文章主要為大家詳細介紹了Maven的繼承和聚合,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2023-04-04
  • 詳解MybatisPlus中@Version注解的使用

    詳解MybatisPlus中@Version注解的使用

    在MyBatisPlus中,常常使用@Version實現(xiàn)樂觀鎖,該注解用于字段上面。本文將通過示例詳細講解@Version注解的使用,感興趣的可以了解一下
    2022-06-06
  • SpringBoot中使用tkMapper的方法詳解

    SpringBoot中使用tkMapper的方法詳解

    這篇文章主要介紹了SpringBoot中使用tkMapper的方法詳解
    2022-11-11
  • C#中NAudio音頻庫的安裝與使用教程詳解

    C#中NAudio音頻庫的安裝與使用教程詳解

    NAudio為.NET平臺下的開源庫,采用ML-PL協(xié)議,它支持許多音頻操作,可實現(xiàn)多種API播放與錄制、多種不同音頻格式等功能,下面就跟隨小編一起學習一下NAudio的安裝與使用吧
    2023-11-11
  • Spring 使用注解方式進行事務(wù)管理配置方式

    Spring 使用注解方式進行事務(wù)管理配置方式

    本篇文章主要介紹了Spring 使用注解方式進行事務(wù)管理配置方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java?CopyOnWriteArrayList源碼超詳細分析

    Java?CopyOnWriteArrayList源碼超詳細分析

    為了將讀取的性能發(fā)揮到極致,jdk中提供了CopyOnWriteArrayList類,下面這篇文章主要給大家介紹了關(guān)于java中CopyOnWriteArrayList源碼解析的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • Java中finalize()詳解及用法

    Java中finalize()詳解及用法

    這篇文章主要介紹了Java中finalize()詳解及用法的相關(guān)資料,final是Java的關(guān)鍵字,它所表示的是“這部分是無法修改的”,需要的朋友可以參考下
    2017-03-03
  • Java面試題沖刺第十八天--Spring框架3

    Java面試題沖刺第十八天--Spring框架3

    這篇文章主要為大家分享了最有價值的三道關(guān)于Spring框架的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java實戰(zhàn)之圖書管理系統(tǒng)的實現(xiàn)

    Java實戰(zhàn)之圖書管理系統(tǒng)的實現(xiàn)

    這篇文章主要介紹了如何利用Java語言編寫一個圖書管理系統(tǒng),文中采用的技術(shù)有Springboot、SpringMVC、MyBatis、ThymeLeaf 等,需要的可以參考一下
    2022-03-03
  • Java使用Random類生成隨機數(shù)示例

    Java使用Random類生成隨機數(shù)示例

    這篇文章主要介紹了Java使用Random類生成隨機數(shù),結(jié)合實例形式分析了java基于Random類生成隨機數(shù)與遍歷輸出相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07

最新評論