2 回答

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

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

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>
}
添加回答
举报