最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java21新特性Record?Patterns示例詳解

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

Record Patterns

Record Patterns 第一次發(fā)布預(yù)覽是在JDK 19、隨后又在JDK 20中進(jìn)行了完善?,F(xiàn)在,Java 21開(kāi)始正式推出該特性?xún)?yōu)化。下面我們通過(guò)一個(gè)例子來(lái)理解這個(gè)新特性。

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

上述代碼中定義了一個(gè)名為Point的record類(lèi)(Java 16中的新特性),如果我們想要獲取、操作或者打印Point中的x和y的話(huà)。就不得不先完成類(lèi)型判斷和類(lèi)型轉(zhuǎn)換。所以,這里為了實(shí)現(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);
    }
}

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

嵌套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) { }

這個(gè)時(shí)候,如果想要訪(fǎng)問(wèn)WindowFrameSize的height,根據(jù)之前案例的理解,我們可以這樣寫(xiě):

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

好像也沒(méi)有很簡(jiǎn)單,但實(shí)際上還有更簡(jiǎn)單的寫(xiě)法,因?yàn)閞ecord的解構(gòu)是可以嵌套的,直接這樣一步完成即可:

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

是不是一下感受到這個(gè)新特性的強(qiáng)大了?

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

相關(guān)文章

  • java 中同步、異步、阻塞和非阻塞區(qū)別詳解

    java 中同步、異步、阻塞和非阻塞區(qū)別詳解

    這篇文章主要介紹了java 中同步、異步、阻塞和非阻塞區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 詳解Java sort()數(shù)組排序(升序和降序)

    詳解Java sort()數(shù)組排序(升序和降序)

    這篇文章主要介紹了詳解Java sort()數(shù)組排序(升序和降序),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • JavaMail入門(mén)教程之創(chuàng)建郵件(2)

    JavaMail入門(mén)教程之創(chuàng)建郵件(2)

    這篇文章主要介紹了JavaMail入門(mén)教程之創(chuàng)建郵件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Java后端中dto、vo、entity的區(qū)別淺析

    Java后端中dto、vo、entity的區(qū)別淺析

    這篇文章主要給大家介紹了關(guān)于Java后端中dto、vo、entity區(qū)別的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-01-01
  • java中獲取類(lèi)資源的方法總結(jié)

    java中獲取類(lèi)資源的方法總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于java中獲取類(lèi)資源的方法總結(jié),需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • JVM調(diào)優(yōu)OutOfMemoryError異常分析

    JVM調(diào)優(yōu)OutOfMemoryError異常分析

    這篇文章主要為大家介紹了JVM調(diào)優(yōu)OutOfMemoryError異常分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java中繼承和組合的區(qū)別

    Java中繼承和組合的區(qū)別

    這篇文章主要介紹了Java中繼承和組合的區(qū)別,  繼承是面向?qū)ο笕蠡咎卣髦?繼承,封裝,多態(tài)),繼承就是子類(lèi)繼承父類(lèi)的特征和行為,使得子類(lèi)對(duì)象(實(shí)例)具有父類(lèi)的實(shí)例域和方法,需要的朋友可以參考下
    2023-07-07
  • java創(chuàng)建以任意圖片為背景的窗口

    java創(chuàng)建以任意圖片為背景的窗口

    這篇文章主要為大家詳細(xì)介紹了java創(chuàng)建以任意圖片為背景的窗口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Eclipse新建web項(xiàng)目流程圖解

    Eclipse新建web項(xiàng)目流程圖解

    這篇文章主要介紹了Eclipse新建web項(xiàng)目流程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • spring boot自帶圖片服務(wù)器使用詳解

    spring boot自帶圖片服務(wù)器使用詳解

    這篇文章主要為大家詳細(xì)介紹了spring boot自帶圖片服務(wù)器的使用 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評(píng)論

建湖县| 栖霞市| 陆河县| 高邮市| 绥滨县| 北京市| 思南县| 台东县| 荃湾区| 伽师县| 锦屏县| 科技| 莆田市| 长兴县| 扶风县| 金华市| 桂阳县| 宁武县| 安达市| 胶南市| 孟津县| 若羌县| 台东县| 略阳县| 荥经县| 邵阳县| 铜山县| 怀柔区| 紫阳县| 寿宁县| 于田县| 丹凤县| 平原县| 定远县| 申扎县| 北京市| 鹤峰县| 长阳| 普兰县| 诸暨市| 甘孜县|