mtumilowicz / java11-optional

Java 9, 10, 11 Optional API news overview.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

java11-optional

Java 9, 10, 11 Optional API news overview.

Reference: http://iteratrlearning.com/java9/2016/09/05/java9-optional.html

preface

java 9

  • public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction) - it is a way of simplifying such task:

    Optional<Person> person = get(...);
    if (person.isPresent()) {
        render(person.get());
    } else {
        renderEmpty();
    }
    

    just to:

    get(...).ifPresentOrElse(X::render, X::renderEmpty)
    
  • public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier) - it is a way of simplifying:

    assumptions:

    Optional<Person> findByName(...)
    Optional<Person> findById(...)
    

    then something like this:

    Optional<Person> person = 
        Optional.ofNullable(
            findByName(person.getName())
            .orElseGet(() -> findById(person.getId())
        ));
    

    could be rewritten just to:

    Optional<Person> person = 
                findByName(person.getName())
                .or(() -> findById(person.getId());
    
  • public Stream<T> stream() - please refer my other github project: java-converting-optionals-list

java 10

java 11

  • public boolean isEmpty() ~ !isPresent()
    • isPresent()
      public boolean isPresent() {
              return value != null;
      }
      
    • isEmpty()
      public boolean isEmpty() {
          return value == null;
      }
      

project description

We provide tests for mentioned above methods.

About

Java 9, 10, 11 Optional API news overview.


Languages

Language:Java 100.0%