Class Either<L,R>

java.lang.Object
software.amazon.awssdk.utils.Either<L,R>
Type Parameters:
L - Left type
R - Right type

public final class Either<L,R> extends Object
Represents a value that can be one of two types.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    apply(Consumer<? super L> lFunc, Consumer<? super R> rFunc)
    Apply the consumers to the left or the right value depending on which is present.
    boolean
     
    static <L, R> Optional<Either<L,R>>
    fromNullable(L left, R right)
    Create a new Optional<Either> from two possibly null values.
    int
     
     
    static <L, R> Either<L,R>
    left(L value)
    Create a new Either with the left type.
    <T> T
    map(Function<? super L,? extends T> lFunc, Function<? super R,? extends T> rFunc)
    Maps the Either to a type and returns the resolved value (which may be from the left or the right value).
    <T> Either<T,R>
    mapLeft(Function<? super L,? extends T> lFunc)
    Map the left most value and return a new Either reflecting the new types.
    <T> Either<L,T>
    mapRight(Function<? super R,? extends T> rFunc)
    Map the right most value and return a new Either reflecting the new types.
     
    static <L, R> Either<L,R>
    right(R value)
    Create a new Either with the right type.

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • map

      public <T> T map(Function<? super L,? extends T> lFunc, Function<? super R,? extends T> rFunc)
      Maps the Either to a type and returns the resolved value (which may be from the left or the right value).
      Type Parameters:
      T - Type that both the left and right should be mapped to.
      Parameters:
      lFunc - Function that maps the left value if present.
      rFunc - Function that maps the right value if present.
      Returns:
      Mapped value from either lFunc or rFunc depending on which value is present.
    • mapLeft

      public <T> Either<T,R> mapLeft(Function<? super L,? extends T> lFunc)
      Map the left most value and return a new Either reflecting the new types.
      Type Parameters:
      T - New type of left value.
      Parameters:
      lFunc - Function that maps the left value if present.
      Returns:
      New Either bound to the new left type and the same right type.
    • mapRight

      public <T> Either<L,T> mapRight(Function<? super R,? extends T> rFunc)
      Map the right most value and return a new Either reflecting the new types.
      Type Parameters:
      T - New type of right value.
      Parameters:
      rFunc - Function that maps the right value if present.
      Returns:
      New Either bound to the same left type and the new right type.
    • apply

      public void apply(Consumer<? super L> lFunc, Consumer<? super R> rFunc)
      Apply the consumers to the left or the right value depending on which is present.
      Parameters:
      lFunc - Consumer of left value, invoked if left value is present.
      rFunc - Consumer of right value, invoked if right value is present.
    • left

      public static <L, R> Either<L,R> left(L value)
      Create a new Either with the left type.
      Type Parameters:
      L - Left type
      R - Right type
      Parameters:
      value - Left value
    • right

      public static <L, R> Either<L,R> right(R value)
      Create a new Either with the right type.
      Type Parameters:
      L - Left type
      R - Right type
      Parameters:
      value - Right value
    • left

      public Optional<L> left()
      Returns:
      the left value
    • right

      public Optional<R> right()
      Returns:
      the right value
    • fromNullable

      public static <L, R> Optional<Either<L,R>> fromNullable(L left, R right)
      Create a new Optional<Either> from two possibly null values. If both values are null, Optional.empty() is returned. Only one of the left or right values is allowed to be non-null, otherwise an IllegalArgumentException is thrown.
      Type Parameters:
      L - Left type
      R - Right type
      Parameters:
      left - The left value (possibly null)
      right - The right value (possibly null)
      Returns:
      an Optional Either representing one of the two values or empty if both are null
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object