Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8086066

Proposal for Optional.or()

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 8u45
    • core-libs
    • x86_64
    • linux

      A DESCRIPTION OF THE REQUEST :
      Provide Optional.or() method similar to Guava with the following implementation:

          public Optional<T> or(Optional<T> other) {
              if (value != null) {
                  return this;
              } else {
                  return Objects.requireNonNull(other);
              }
          }


      JUSTIFICATION :
      Having or() method would allow picking the very first non-empty Optional. One can even chain or():

          opt1.or(opt2).or(opt3)

      Such method would be really useful and in line with existing orElse().


      ---------- BEGIN SOURCE ----------
      Following pseudo-test prints `true` all the way down:

      Optional<String> foo = Optional.of("abc");
      Optional<String> bar = Optional.of("def");
      Optional<String> emp = Optional.empty();

      System.out.println(foo.or(bar).get().equals("abc"));
      System.out.println(bar.or(foo).get().equals("def"));
      System.out.println(foo.or(emp).get().equals("abc"));
      System.out.println(emp.or(bar).get().equals("def"));
      System.out.println(!emp.or(emp).isPresent());

      ---------- END SOURCE ----------

            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: