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

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

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

引言

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

下面就來具體了解record類的細節(jié)。

聲明record類

聲明record類的基礎語法:

record range(int start, int end){}

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

  • 單獨文件申明:
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類詳解

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

因為record關鍵詞申明類主要是為了簡化一些類的申明,所以它本質(zhì)就是一類特殊的class,或者說是某一個模版的class。

record申明的類,具備這些特點:

  • 它是一個final
  • 自動實現(xiàn)equals、hashCodetoString函數(shù)
  • 成員變量均為public屬性

所以,對于之前寫的range類,它等價于一個這樣的類:

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

因為一些函數(shù)是隱藏的,在range定義的時候,我們看不到,所以我們可以嘗試寫這樣一段測試代碼來驗證一下:

@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ù)

因為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類使用細節(jié)示例詳解的詳細內(nèi)容,更多關于Java16新特性record類的資料請關注腳本之家其它相關文章!

相關文章

  • Java日志軟件Log4j的基本使用教程

    Java日志軟件Log4j的基本使用教程

    這篇文章主要介紹了Java日志軟件Log4j的基本使用教程,包括回滾和發(fā)送日志郵件等基本功能使用的講解,需要的朋友可以參考下
    2015-12-12
  • 快速掌握Java8中的Optional

    快速掌握Java8中的Optional

    Optional 是一個容器類,代表一個值存在或不存在,Optional并不是用來替換所有的null,而是為了在設計良好的API中更明確地表達可能缺失的值,這篇文章主要介紹了Java8的Optional及使用,需要的朋友可以參考下
    2023-07-07
  • 詳解IDEA多module項目maven依賴的一些說明

    詳解IDEA多module項目maven依賴的一些說明

    這篇文章主要介紹了詳解IDEA多module項目maven依賴的一些說明,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Java后臺接收數(shù)據(jù)的三種方式(url、form-data與application/json)

    Java后臺接收數(shù)據(jù)的三種方式(url、form-data與application/json)

    本文主要介紹了Java后臺接收數(shù)據(jù)的三種方式(url、form-data與application/json),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 基于Spring-Security自定義登陸錯誤提示信息

    基于Spring-Security自定義登陸錯誤提示信息

    這篇文章主要介紹了Spring-Security自定義登陸錯誤提示信息,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中反射的"暴破"機制(SetAccessible方法)詳解

    Java中反射的"暴破"機制(SetAccessible方法)詳解

    這篇文章主要為大家詳細介紹了Java中反射的"暴破"機制,以及如何利用這一機制實現(xiàn)訪問非公有屬性,方法,和構(gòu)造器,文中示例代碼講解詳細,感興趣的可以了解一下
    2022-08-08
  • Java國密加密SM2代碼詳細使用步驟

    Java國密加密SM2代碼詳細使用步驟

    SM2算法可以用較少的計算能力提供比RSA算法更高的安全強度,而所需的密鑰長度卻遠比RSA算法低,下面這篇文章主要給大家介紹了關于Java國密加密SM2代碼的相關資料,需要的朋友可以參考下
    2024-07-07
  • 解決spring boot hibernate 懶加載的問題

    解決spring boot hibernate 懶加載的問題

    這篇文章主要介紹了解決spring boot hibernate 懶加載的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • java中VO PO DTO POJO BO DO對象的應用場景及使用方式

    java中VO PO DTO POJO BO DO對象的應用場景及使用

    文章介紹了Java開發(fā)中常用的幾種對象類型及其應用場景,包括VO、PO、DTO、POJO、BO和DO等,并通過示例說明了它們在不同場景下的應用
    2025-01-01
  • Spring中@Scheduled注解的參數(shù)詳解

    Spring中@Scheduled注解的參數(shù)詳解

    這篇文章主要介紹了Spring中@Scheduled注解的參數(shù)詳解,@Scheduled注解的使用這里不詳細說明,@Scheduled注解有幾個參數(shù)需要說明一下,直接對8個參數(shù)進行講解,需要的朋友可以參考下
    2023-11-11

最新評論