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

Java16新特性record類使用細(xì)節(jié)示例詳解

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

引言

以前我們定義類都是用class關(guān)鍵詞,但從Java 16開始,我們將多一個(gè)關(guān)鍵詞record,它也可以用來(lái)定義類。record關(guān)鍵詞的引入,主要是為了提供一種更為簡(jiǎn)潔、緊湊的final類的定義方式。

下面就來(lái)具體了解record類的細(xì)節(jié)。

聲明record類

聲明record類的基礎(chǔ)語(yǔ)法:

record range(int start, int end){}

我們知道class類可以在單獨(dú)文件中生命,也可以在其他類中申明。那么record類也一樣,它有這幾種申明方式:

  • 單獨(dú)文件申明:
public record range(int start, int end){}
  • 在類內(nèi)部申明:
public class DidispaceTest {
    public record range(int start, int end){}
}
  • 函數(shù)內(nèi)申明:
public class DidispaceTest {
  public void test() {
    public record range(int start, int end){}
  }
}

record類詳解

在知道了如何申明之后,你一定會(huì)想用record申明的就那么點(diǎn)元素,它到底會(huì)具備什么能力呢?

因?yàn)?code>record關(guān)鍵詞申明類主要是為了簡(jiǎn)化一些類的申明,所以它本質(zhì)就是一類特殊的class,或者說(shuō)是某一個(gè)模版的class。

record申明的類,具備這些特點(diǎn):

  • 它是一個(gè)final
  • 自動(dòng)實(shí)現(xiàn)equals、hashCode、toString函數(shù)
  • 成員變量均為public屬性

所以,對(duì)于之前寫的range類,它等價(jià)于一個(gè)這樣的類:

public final class range{
    final int start;
    final int end;
    public range(int start, int end) {
        this.start = start;
        this.end = end;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        range range = (range) o;
        return start == range.start && end == range.end;
    }
    @Override
    public int hashCode() {
        return Objects.hash(start, end);
    }
    @Override
    public String toString() {
        return "range{" +
                "start=" + x +
                ", end=" + y +
                '}';
    }
    public int start(){
        return start;
    }
    public int end(){
        return end;
    }
}

因?yàn)橐恍┖瘮?shù)是隱藏的,在range定義的時(shí)候,我們看不到,所以我們可以嘗試寫這樣一段測(cè)試代碼來(lái)驗(yàn)證一下:

@Test
public void test() {
  range r = new range(100, 200);
  log.info(r.toString());
  range r2 = new range(100, 200);
  log.info(String.valueOf(r.equals(r2)));
}

定義成員函數(shù)

因?yàn)?code>record申明的本質(zhì)也是類,那么定義成員函數(shù)肯定也是可以的。

比如,我們可以這樣在record類中定義成員函數(shù):

record range(int start, int end){
  int distance(){
    return end - start;
  }
}

然后,就可以這樣調(diào)用它:

range r = new range(100, 200);
r.distance();

視頻地址:https://www.bilibili.com/video/BV1vY4y1b71m/

以上就是Java16新特性record類使用細(xì)節(jié)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Java16新特性record類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • springboot實(shí)現(xiàn)調(diào)用百度ocr實(shí)現(xiàn)身份識(shí)別+二要素校驗(yàn)功能

    springboot實(shí)現(xiàn)調(diào)用百度ocr實(shí)現(xiàn)身份識(shí)別+二要素校驗(yàn)功能

    本文介紹了如何使用Spring Boot調(diào)用百度OCR服務(wù)進(jìn)行身份識(shí)別,并通過(guò)二要素校驗(yàn)確保信息準(zhǔn)確性,感興趣的朋友一起看看吧
    2025-03-03
  • Java中包裝類的緩存機(jī)制詳細(xì)講解

    Java中包裝類的緩存機(jī)制詳細(xì)講解

    Java中的包裝類緩存機(jī)制是指在Java?5中引入的一個(gè)功能,該功能可以幫助節(jié)省內(nèi)存、提高性能,這篇文章主要介紹了Java中包裝類緩存機(jī)制的相關(guān)資料,文中通過(guò)代碼介紹地方非常詳細(xì),需要的朋友可以參考下
    2025-12-12
  • JAVA中使用openoffice將Excel轉(zhuǎn)PDF再轉(zhuǎn)圖片功能的實(shí)現(xiàn)代碼

    JAVA中使用openoffice將Excel轉(zhuǎn)PDF再轉(zhuǎn)圖片功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了JAVA中使用openoffice將Excel轉(zhuǎn)PDF再轉(zhuǎn)圖片功能實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 一文帶你搞懂什么是BIO

    一文帶你搞懂什么是BIO

    BIO英文全名是 blocking IO,也叫做 阻塞IO,是最容易理解、最容易實(shí)現(xiàn)的IO工作方式,本文就來(lái)通過(guò)一些簡(jiǎn)單的示例為大家講講什么是BIO吧
    2023-06-06
  • RabbitMQ 3.9.7 鏡像模式集群與Springboot 2.5.5 整合

    RabbitMQ 3.9.7 鏡像模式集群與Springboot 2.5.5 整合

    今天我們來(lái)聊聊 RabbitMQ 3.9.7 鏡像模式集群與Springboot 2.5.5 整合,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-10-10
  • Spring?JDBC?框架簡(jiǎn)介

    Spring?JDBC?框架簡(jiǎn)介

    Spring?JDBC?提供幾種方法和數(shù)據(jù)庫(kù)中相應(yīng)的不同的類與接口。我將給出使用JdbcTemplate類框架的經(jīng)典和最受歡迎的方法。本文給大家介紹Spring?JDBC?框架的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-12-12
  • java中g(shù)et()方法和set()方法的作用淺析

    java中g(shù)et()方法和set()方法的作用淺析

    這篇文章主要給大家介紹了關(guān)于java中g(shù)et()方法和set()方法的作用,set是是對(duì)數(shù)據(jù)進(jìn)行設(shè)置,而get是對(duì)數(shù)據(jù)進(jìn)行獲取,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java之idea @NotNull @Nullable 注解使用

    Java之idea @NotNull @Nullable 注解使用

    這篇文章主要介紹了Java之idea @NotNull @Nullable 注解使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Springboot集成阿里云OSS上傳文件系統(tǒng)教程

    Springboot集成阿里云OSS上傳文件系統(tǒng)教程

    這篇文章主要介紹了Springboot集成阿里云OSS上傳文件系統(tǒng)教程,通過(guò)詳細(xì)的圖文展示,代碼步驟的展示和文件配置信息,希望對(duì)你有所幫助
    2021-06-06
  • java中比較2個(gè)Date是不是同一天的五種實(shí)現(xiàn)方法與對(duì)比

    java中比較2個(gè)Date是不是同一天的五種實(shí)現(xiàn)方法與對(duì)比

    這篇文章主要為大家詳細(xì)介紹了java中比較2個(gè)Date是不是同一天的五種實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下
    2026-01-01

最新評(píng)論

武功县| 吉首市| 恩施市| 聂拉木县| 响水县| 肇州县| 凌源市| 二连浩特市| 合水县| 宣武区| 廊坊市| 阳高县| 陇西县| 沙洋县| 闽侯县| 昭苏县| 泾阳县| 南召县| 安徽省| 和田市| 新蔡县| 将乐县| 芜湖市| 铜川市| 泰兴市| 钟山县| 清水河县| 镇远县| 岱山县| 都兰县| 通化市| 谢通门县| 阿城市| 杂多县| 余姚市| 盈江县| 克东县| 资溪县| 夹江县| 阿拉善左旗| 洛浦县|