Class OneOfN.Either<T1,T2>

java.lang.Object
de.xima.fc.api.rest.pub.client.user_portal.OneOfN
de.xima.fc.api.rest.pub.client.user_portal.OneOfN.Either<T1,T2>
Type Parameters:
T1 - Type of the value for the left case.
T2 - Type of the value for the right case.
Enclosing class:
OneOfN

public static final class OneOfN.Either<T1,T2> extends OneOfN
Emulates a sum type consisting of 2 cases.
  • Method Details

    • match

      public <R> R match(Function<T1,R> left, Function<T2,R> right)
      Performs a case match on this sum type by invoking the mapping function for the matching case with the value of this sum type and returning the result.
      Type Parameters:
      R - Type of the result returned by each mapping function.
      Parameters:
      left - Mapping function for the left case.
      right - Mapping function for the right case.
      Returns:
      The value returned by the mapping function for the matching case.
    • match

      public <R> R match(R defaultValue, OneOfN.EitherMatcher<R,T1,T2> matcher)
      Performs a case match on this sum type by invoking the mapping function for the matching case with the value of this sum type and returning the result.
      Type Parameters:
      R - Type of the result returned by each mapping function.
      Parameters:
      defaultValue - Value returned when the given matcher has no matching case.
      matcher - Matcher object for each case.
      Returns:
      The value returned by the mapping function for the matching case.
    • mergeFirst

      public T2 mergeFirst(Function<T1,T2> combiner)
      Allows for a multi-stage reduce operation of the cases into a single value. Reduces the number of cases to one by mapping the first to the second case via the given mapping function, then unwraps the resulting Just type.
      Parameters:
      combiner - Mapping function that transform the value of the first case into the second case.
      Returns:
      The value of the only remaining case.
    • mergeLast

      public T1 mergeLast(Function<T2,T1> combiner)
      Allows for a multi-stage reduce operation of the cases into a single value. Reduces the number of cases to one by mapping the right to the left case via the given mapping function, then unwraps the resulting Just type.
      Parameters:
      combiner - Mapping function that transform the value of the right case into the left case.
      Returns:
      A sum type with one less case.
    • selectLeft

      public Optional<T1> selectLeft()
      Returns:
      The value of the left case, if a value exists for that case.
    • isLeft

      public boolean isLeft()
      Returns:
      Whether a value for the left case is present.
    • selectRight

      public Optional<T2> selectRight()
      Returns:
      The value of the right case, if a value exists for that case.
    • isRight

      public boolean isRight()
      Returns:
      Whether a value for the right case is present.
    • left

      public static <T1,T2> OneOfN.Either<T1,T2> left(T1 left)
      Parameters:
      left - The value for the left case.
      Returns:
      A new sum type with the value for the left case.
    • right

      public static <T1,T2> OneOfN.Either<T1,T2> right(T2 right)
      Parameters:
      right - The value for the right case.
      Returns:
      A new sum type with the value for the right case.