Cod*_*ode 18 java java-14 java-record
我有一个记录,想向它添加默认构造函数。
public record Record(int recordId) {
public Record {
}
}
Run Code Online (Sandbox Code Playgroud)
但它用int参数创建了构造函数。
public final class Record extends java.lang.Record {
private final int recordId;
public Record(int);
//other method
}
Run Code Online (Sandbox Code Playgroud)
我们如何向记录添加默认构造函数?
Thi*_*aku 22
要分裂头发,您永远不能定义默认构造函数,因为当没有定义构造函数时,编译器会生成默认构造函数,因此任何定义的构造函数都不是默认构造函数。
如果您希望记录具有无参数构造函数,则记录确实允许添加额外的构造函数或工厂方法,只要调用将所有记录字段作为参数的“规范构造函数”即可。
public record Record(int recordId) {
public Record() {
this(0);
}
}
Run Code Online (Sandbox Code Playgroud)
Nam*_*man 19
在您的情况下,您可以明确指定一个无参数构造函数,如果需要,可以使用默认值委托给具有默认值的规范构造函数,并且可以这样做 -
public Record(){
this(Integer.MIN_VALUE);
}
Run Code Online (Sandbox Code Playgroud)
简而言之,任何非规范的构造函数都应该委托给一个,这对于这些表示的数据承载性质来说应该是正确的。
另一方面,请注意您在代码中使用的表示。
public Record {}
Run Code Online (Sandbox Code Playgroud)
被称为“紧凑构造函数”,它表示接受所有参数的构造函数,也可用于验证作为记录属性提供的数据。紧凑构造函数是声明规范构造函数的另一种方式。
| 归档时间: |
|
| 查看次数: |
5615 次 |
| 最近记录: |