如何检查对象是否“空”?

时间:2017-07-06 01:47:25

标签: java

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; }
    }
}

4 个答案:

答案 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