DoubleValue implements Value<Double> { @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof DoubleValue)) { return false; } DoubleValue other = (DoubleValue) obj; if (value == null) { if (other.value != null) { return false; } } else if (!value.equals(other.value)) { return false; } return true; } DoubleValue(Double value); @Override Double getDouble(); @Override Double getValue(); @Override void setValue(Double value); @Override int compareTo(Value<Double> arg); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString();  }
@Test public void equalsTest() { DoubleValue dnull = new DoubleValue(null); DoubleValue dnull1 = new DoubleValue(null); DoubleValue d1 = new DoubleValue(1.0); DoubleValue d11 = new DoubleValue(1.0); DoubleValue d2 = new DoubleValue(2.0); Assert.assertEquals(d1, d1); Assert.assertEquals(d1, d11); Assert.assertEquals(dnull, dnull1); Assert.assertNotEquals(dnull, d1); Assert.assertNotEquals(d1, null); Assert.assertNotEquals(d1, "a string"); Assert.assertNotEquals(d1, dnull); Assert.assertNotEquals(d1, d2); }