欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Record的應(yīng)用小結(jié)

 更新時間:2025年08月15日 09:16:32   作者:布朗克168  
Java Record是Java 14引入的不可變數(shù)據(jù)載體,能自動生成模板代碼,下面就來介紹一下Java中Record的應(yīng)用,感興趣的可以了解一下

Record是Java 14引入的預(yù)覽特性(Java 16正式發(fā)布),主要用于簡化不可變數(shù)據(jù)載體的建模。其核心價值在于自動生成模板代碼,替代傳統(tǒng)POJO類的繁瑣編寫。

一、核心特性

  1. 自動生成方法
    編譯器自動生成:

    • final字段的getter(方法名即字段名,無get前綴)
    • equals()hashCode()
    • toString()
    • 全字段構(gòu)造器
  2. 不可變性
    所有字段默認為final,創(chuàng)建后狀態(tài)不可修改。

  3. 語法結(jié)構(gòu)

    public record 類名(類型1 字段1, 類型2 字段2...) { 
        // 可選:自定義方法/構(gòu)造器
    }
    

二、典型應(yīng)用場景

  1. DTO數(shù)據(jù)傳輸對象

    public record UserDTO(String id, String name, LocalDateTime createTime) {}
    
  2. 多返回值方法
    替代Map或臨時類:

    public record Coordinate(double x, double y) {}
    
    public Coordinate calculatePosition() {
        return new Coordinate(12.5, 8.3);
    }
    
  3. 模式匹配(Java 17+)
    配合instanceof簡化類型判斷:

    Object obj = new UserDTO("U001", "Alice", LocalDateTime.now());
    if (obj instanceof UserDTO(String id, String name, var time)) {
        System.out.println(name); // 直接解構(gòu)字段
    }
    

三、與傳統(tǒng)類對比

特性Record類傳統(tǒng)POJO類
字段聲明直接在括號內(nèi)聲明顯式聲明+getter/setter
不可變性默認強制需手動添加final
代碼量平均減少70%模板代碼冗長
繼承隱式繼承Record,不可繼承其他類可自由繼承
可變性擴展不支持可通過setter實現(xiàn)

四、使用示例

// 定義Record
public record Product(
    String sku, 
    BigDecimal price,
    int stock
) {
    // 自定義緊湊構(gòu)造器(驗證邏輯)
    public Product {
        Objects.requireNonNull(sku);
        if (price.compareTo(BigDecimal.ZERO) < 0) 
            throw new IllegalArgumentException("價格不能為負");
    }
    
    // 自定義方法
    public boolean isInStock() {
        return stock > 0;
    }
}

// 使用
Product laptop = new Product("P1001", new BigDecimal("5999.00"), 10);
System.out.println(laptop.sku()); // 直接訪問字段
System.out.println(laptop.isInStock());

五、注意事項

  1. 不適合需要可變狀態(tài)的場景
  2. 不能繼承其他類(但可實現(xiàn)接口)
  3. 字段默認private final,無法添加實例字段
  4. 可通過靜態(tài)字段/方法擴展功能

在Java 21中,Record可配合密封接口(sealed interface)實現(xiàn)更安全的代數(shù)數(shù)據(jù)類型(ADT)設(shè)計,適用于領(lǐng)域驅(qū)動開發(fā)(DDD)中的值對象建模。

到此這篇關(guān)于Java中Record的應(yīng)用小結(jié)的文章就介紹到這了,更多相關(guān)Java Record應(yīng)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評論