Cube类有两个构造函数,一个接受三个参数转换为多维数据集的树属性,另一个不需要任何参数,因此创建一个“空”多维数据集。我的问题是布尔方法如何检查立方体是有效还是空?有没有办法在不需要检查每个属性的情况下做到这一点?
class Application {
public static void main(String[] args) {
Cube c1 = new Cube(4, 3, 6);
Cube c2 = new Cube();
System.out.println(isNotEmpty(c1));
System.out.println(isNotEmpty(c2));
}
public static boolean isNotEmpty(Cube cube) {
if (/*cube attributes are NOT empty*/) {
return true;
} else {
return false;
}
}
public static class Cube {
private int height;
private int width;
private int depth;
public Cube() {}
public Cube(int height, int width, int depth) {
this.height = height;
this.width = width;
this.depth = depth;
}
public int getHeight() { return height; }
public int getWidth() { return width; }
public int getDepth() { return depth; }
}
}
答案 0 :(得分:0)
由于看起来Cube
所拥有的唯一状态是高度,宽度和深度,因此您实际上只需使用null
来表示空Cube
。
首先调用没有维度的多维数据集的多维数据集是没有多大意义的。使用null
作为标记可能最有意义。
答案 1 :(得分:0)
在构造函数中使用bool标志isEmptyCube
。在创建对象时,它将自动标记为是否为空白。
public static class Cube {
//...
private boolean isEmptyCube;
public Cube() {isEmptyCube = true;}
public Cube(int hight, int width, int depth) {
//...
isEmptyCube = false;
}
public isCubeEmpty() { return isEmptyCube;}
答案 2 :(得分:0)
将一个(或多个)int字段更改为Integer对象,或者引入新的布尔字段isSet
或删除空构造函数
1)如果您使用整数对象,您可以测试它是否为null
-as int
基元的默认值为0
2)如果你有一个布尔字段,你可以将其默认为false
并在适当的构造函数中将其设置为true
答案 3 :(得分:0)
这似乎是一个非常棘手的问题。首先,我们必须有任何标准:What is an empty object?
。当我们有一些标准,甚至单一时,我们必须检查它。
从我们考虑Cube c3 = new Cube(0, 0, 0)
喜欢的原因不是空的,所以,这里有一种方法:
public class CubeApplication {
public static void main(String[] args) {
Cube c1 = new Cube(4, 3, 6);
Cube c2 = new Cube();
Cube c3 = new Cube(0, 0, 0);
System.out.println(c1.isEmpty());
System.out.println(c2.isEmpty());
System.out.println(c3.isEmpty());
}
static class Cube {
private int hight;
private int width;
private int depth;
private boolean isEmpty;
public Cube() {
this.isEmpty = false;
}
public Cube(int hight, int width, int depth) {
this.hight = hight;
this.width = width;
this.depth = depth;
this.isEmpty = true;
}
public boolean isEmpty() {
return this.isEmpty;
}
public int getHight() {
return this.hight;
}
public int getWidth() {
return this.width;
}
public int getDepth() {
return this.depth;
}
}
}
<强>输出:强>
true
false
true