【发布时间】:2022-03-15 17:15:47
【问题描述】:
我创建了一个 Java record,并希望有一个构造函数,与默认构造函数相比,它接受的参数数量减少,并根据给定的参数计算和初始化所有成员。
但是,鉴于自定义构造函数的第一行必须调用默认构造函数,我发现这很难实现。我目前的做法是根据需要调用我的计算函数,但这会导致不必要的处理。
肯定有更好的方法来实现这一点吗?
public record MyRecord(double a, double b, double c) {
public MyRecord(double a) {
this(a, calculateB(a), calculateC(a, calculateB(a)));
}
private static double calculateB(double a) {
// Some calculations
return b;
}
private static double calculateC(double a, double b) {
// Some calculations
return c;
}
}
【问题讨论】:
-
我非常喜欢在对象中只使用 null 构造函数并使用 setter 来避免这种情况
-
@ControlAltDel 这个问题是关于记录的,记录是不可变的。