Class OneOfN.OneOf4<T1,​T2,​T3,​T4>

  • Type Parameters:
    T1 - Type of the value for the first case.
    T2 - Type of the value for the second case.
    T3 - Type of the value for the third case.
    T4 - Type of the value for the fourth case.
    All Implemented Interfaces:
    Serializable
    Enclosing class:
    OneOfN

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

      • isFirst

        public boolean isFirst()
        Returns:
        Whether a value for the first case is present.
      • isFourth

        public boolean isFourth()
        Returns:
        Whether a value for the fourth case is present.
      • isSecond

        public boolean isSecond()
        Returns:
        Whether a value for the second case is present.
      • isThird

        public boolean isThird()
        Returns:
        Whether a value for the third case is present.
      • match

        public <R> R match​(Function<T1,​R> first,
                           Function<T2,​R> second,
                           Function<T3,​R> third,
                           Function<T4,​R> fourth)
        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:
        first - Mapping function for the first case.
        second - Mapping function for the second case.
        third - Mapping function for the third case.
        fourth - Mapping function for the fourth case.
        Returns:
        The value returned by the mapping function for the matching case.
      • match

        public <R> R match​(R defaultValue,
                           OneOfN.OneOf4Matcher<R,​T1,​T2,​T3,​T4> 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 OneOfN.OneOf3<T2,​T3,​T4> mergeFirst​(Function<T1,​T2> combiner)
        Allows for a multi-stage reduce operation of the cases into a single value. Reduces the number of cases by one by mapping the first to the second case via the given mapping function.
        Parameters:
        combiner - Mapping function that transform the value of the first case into the second case.
        Returns:
        A sum type with one less case.
      • mergeLast

        public OneOfN.OneOf3<T1,​T2,​T3> mergeLast​(Function<T4,​T3> combiner)
        Allows for a multi-stage reduce operation of the cases into a single value. Reduces the number of cases by one by mapping the fourth to the third case via the given mapping function.
        Parameters:
        combiner - Mapping function that transform the value of the fourth case into the third case.
        Returns:
        A sum type with one less case.
      • selectFirst

        public Optional<T1> selectFirst()
        Returns:
        The value of the first case, if a value exists for that case.
      • selectFourth

        public Optional<T4> selectFourth()
        Returns:
        The value of the fourth case, if a value exists for that case.
      • selectSecond

        public Optional<T2> selectSecond()
        Returns:
        The value of the second case, if a value exists for that case.
      • selectThird

        public Optional<T3> selectThird()
        Returns:
        The value of the third case, if a value exists for that case.
      • first

        public static <T1,​T2,​T3,​T4> OneOfN.OneOf4<T1,​T2,​T3,​T4> first​(T1 first)
        Parameters:
        first - The value for the first case.
        Returns:
        A new sum type with the value for the first case.
      • fourth

        public static <T1,​T2,​T3,​T4> OneOfN.OneOf4<T1,​T2,​T3,​T4> fourth​(T4 fourth)
        Parameters:
        fourth - The value for the fourth case.
        Returns:
        A new sum type with the value for the fourth case.
      • second

        public static <T1,​T2,​T3,​T4> OneOfN.OneOf4<T1,​T2,​T3,​T4> second​(T2 second)
        Parameters:
        second - The value for the second case.
        Returns:
        A new sum type with the value for the second case.
      • third

        public static <T1,​T2,​T3,​T4> OneOfN.OneOf4<T1,​T2,​T3,​T4> third​(T3 third)
        Parameters:
        third - The value for the third case.
        Returns:
        A new sum type with the value for the third case.