OptionalDouble Example

OptionalDouble, a sister to OptionalLong and OptionalInt, is a new class introduced in Java 8 which is a container object that may or may not contain a double value. If a double is present, isPresent() will return true and getAsDouble() will return the value.

When dealing with non primitive values, see java.util.Optional example.

getAsDouble

@Test
public void optional_double_getAsDouble() {

    OptionalDouble optionalDouble = OptionalDouble.of(90);

    assertEquals(90, optionalDouble.getAsDouble(), 0);
}

ifPresent

@Test
public void optional_double_ifPresent() {

    OptionalDouble optionalDouble = OptionalDouble.of(56);

    optionalDouble.ifPresent(p -> System.out.println(p));

    // or

    optionalDouble.ifPresent(System.out::println);
}

isPresent

@Test
public void optional_double_isPresent() {

    OptionalDouble optionalDouble = OptionalDouble.of(56);

    assertTrue(optionalDouble.isPresent());
}

orElse

@Test
public void optional_double_orElse() {

    OptionalDouble optionalDouble = OptionalDouble.empty();

    assertEquals(77, optionalDouble.orElse(77), 0);
}

orElseGet

@Test
public void optional_double_orElseGet() {

    OptionalDouble optionalDouble = OptionalDouble.empty();

    assertEquals(10, optionalDouble.orElseGet(() -> 10), 0);

    // or 
    DoubleSupplier doubleSupplier = new DoubleSupplier() {
        @Override
        public double getAsDouble() {
            return 10;
        }
    };

    assertEquals(10, optionalDouble.orElseGet(doubleSupplier), 0);
}

orElseThrow

@Test(expected=IllegalStateException.class)
public void optional_double_orElseThrow() {

    OptionalDouble optionalFramework = OptionalDouble.empty();

    optionalFramework.orElseThrow(IllegalStateException::new);
}

empty

@Test
public void optional_double_empty() {

    OptionalDouble optionalDouble = OptionalDouble.empty();

    assertFalse(optionalDouble.isPresent());
}

of

@Test
public void optional_double_of() {

    OptionalDouble optionalDouble = OptionalDouble.of(89);

    assertEquals(89, optionalDouble.getAsDouble(), 0);
}