Search code examples
javaprimitive

Check if primitive has been set


Given a very simple class:

class MyClass {
    int id;
    double value;

    MyClass(int id) {
        this.id = id;
    }

    void setValue(double v) {
        value = v;
    }

    boolean isValueUnassigned() {
        return value == 0;
    }
}

To check if value has not been assigned yet, is it OK if I just do return value == 0; since a double is 0 by default?


Solution

  • Found the cleanest and clearest way to express it:

    class MyClass {
        int id;
        Optional<Double> value;
    
        MyClass(int id) {
            this.id = id;
            this.value = Optional.empty();
        }
    
        void setValue(double v) {
            value = Optional.of(v);
        }
    
        double getValue() {
            if (isValueUnassigned) {
                throw new RuntimeException("Value has not been assigned");
            }
            return value.get();
        }
    
        boolean isValueUnassigned() {
            return value.isEmpty();
        }
    }