给定一个非常简单的类:
class MyClass {
int id;
double value;
MyClass(int id) {
this.id = id;
}
void setValue(double v) {
value = v;
}
boolean isValueUnassigned() {
return value == 0;
}
}
Run Code Online (Sandbox Code Playgroud)
要检查是否value尚未分配,return value == 0;因为a double是0默认设置,我可以这样做吗?
小智 5
好吧,默认情况下原语double设置为是0.0。但是,如果您只是这样做,return value == 0;则无法确定setValue(0)之前是否有人打过电话,但这也是有效的分配。如果你想 100% 确定是否有人打电话给我,setValue()我建议你这样做:
class MyClass {
private int id;
private double value;
private boolean valueSet; // is false by default
public MyClass(int id) {
this.id = id;
}
public void setValue(double v) {
value = v;
valueSet = true;
}
public boolean isValueSet() {
return valueSet;
}
}
Run Code Online (Sandbox Code Playgroud)