Class OneOfN.Either<T1,​T2>

  • Type Parameters:
    T1 - Type of the value for the left case.
    T2 - Type of the value for the right case.
    All Implemented Interfaces:
    Serializable
    Enclosing class:
    OneOfN

    public static final class OneOfN.Either<T1,​T2>
    extends OneOfN
    Emulates a sum type consisting of 2 cases.
    See Also:
    Serialized Form
    • Method Detail

      • isLeft

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

        public boolean isRight()
        Returns:
        Whether a value for the right case is present.
      • 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.
      • selectRight

        public Optional<T2> selectRight()
        Returns:
        The value of the right case, if a value exists for that case.
      • 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.