是否有引入 Java 数据类的预计日期?

Scala(案例类)和 C#(结构)支持数据类。Java 预计什么时候提供对此语言功能的支持?



吃鸡游戏
浏览 123回答 2
2回答

蓝山帝景

经过一些研究,我最终得到了Brian Goetz 写的《Java 数据类和密封类型》 。这是JEP,记录(预览),链接到上面的内容。摘要 - 这只是一个想法/JEP。因此,我们无法判断它何时会实施(或者是否会实施)

慕田峪4524236

爪哇记录正在预览的记录功能提供“声明类,这些类是浅层不可变数据的透明持有者” 。换句话说,一个名义元组,一个特定的有序元素序列。记录是一种特殊的类。在定义记录类别时,您需要牺牲一些灵活性来换取简洁性。这是一个完整的记录类定义示例:record Task( String title , String notes , LocalDate due ) {}或者:record Dog( Breed breed , Color color , String name ) {}编译器隐式负责提供构造函数、成员字段、访问器方法、toString、hashCode和equals。如果需要,您可以选择覆盖这些,例如定义一个构造函数来验证输入。

12345678_0001

record Range(int lo, int hi)将替换package javax0.geci.tests.record;import javax0.geci.annotations.Geci;@Geci("record")public final class Range {    final  int  lo;    final  int  hi;    //<editor-fold id="record">    public Range(final int lo, final int hi) {        this.lo = lo;        this.hi = hi;    }    public int getLo() {        return lo;    }    public int getHi() {        return hi;    }    @Override    public int hashCode() {        return java.util.Objects.hash(lo, hi);    }    @Override    public boolean equals(Object o) {        if (this == o) return true;        if (o == null || getClass() != o.getClass()) return false;        Range that = (Range) o;        return java.util.Objects.equals(that.lo, lo) && java.util.Objects.equals(that.hi, hi);    }    //</editor-fold>}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java