为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

吃鸡游戏 2023-09-27 10:24:39
Scala(案例类)和 C#(结构)支持数据类。Java 预计什么时候提供对此语言功能的支持?
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

经过一些研究,我最终得到了Brian Goetz 写的《Java 数据类和密封类型》 。

这是JEP记录(预览),链接到上面的内容。

摘要 - 这只是一个想法/JEP。因此,我们无法判断它何时会实施(或者是否会实施)


查看完整回答
反对 回复 2023-09-27
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

爪哇记录

正在预览的记录功能提供“声明类,这些类是浅层不可变数据的透明持有者” 换句话说,一个名义元组,一个特定的有序元素序列。

记录是一种特殊的类。在定义记录类别时,您需要牺牲一些灵活性来换取简洁性。这是一个完整的记录类定义示例:

record Task( String title , String notes , LocalDate due ) {}

或者:

record Dog( Breed breed , Color color , String name ) {}

编译器隐式负责提供构造函数、成员字段、访问器方法、toStringhashCodeequals。如果需要,您可以选择覆盖这些,例如定义一个构造函数来验证输入。



查看完整回答
反对 回复 2023-09-27
?
12345678_0001

TA贡献1802条经验 获得超5个赞

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>

}


查看完整回答
反对 回复 2023-09-27
  • 2 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信