Class OneOfN.Just<T1>

java.lang.Object
de.xima.fc.common.data.algebraic.OneOfN
de.xima.fc.common.data.algebraic.OneOfN.Just<T1>
Type Parameters:
T1 - Type of the value for the first case.
All Implemented Interfaces:
Serializable
Enclosing class:
OneOfN

public static final class OneOfN.Just<T1> extends OneOfN
Emulates a sum type consisting of 1 case.
See Also:
  • Method Details

    • first

      public T1 first()
      Returns:
      The value of the first case, if a value exists for that case.
      Throws:
      IllegalArgumentException - If the requested case is not present.
    • getValue

      public T1 getValue()
      Description copied from class: OneOfN
      Checks which case applies and returns the value for that case. You need to cast it yourself to the required type.
      Overrides:
      getValue in class OneOfN
      Returns:
      The value of this sum type.
    • isFirst

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

      public <R1> OneOfN.Just<R1> map(Function<? super T1, ? extends R1> first)
      Maps this sum type to another sum type by invoking the mapping function for the matching case with the value of this sum type and returning the result.
      Type Parameters:
      R1 - Type of the result returned by the mapping function for the first case.
      Parameters:
      first - Mapping function for the first case.
      Returns:
      The sum type with the value returned by the mapping function for the matching case.
    • match

      public <R> R match(Function<? super T1, ? extends R> first)
      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.
      Returns:
      The value returned by the mapping function for the matching case.
    • match

      public <R> R match(OneOfN.JustMatcher<? extends R, ? super T1> 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:
      matcher - Matcher object for each case.
      Returns:
      The value returned by the mapping function for the matching case.
    • match

      public <R> R match(R defaultValue, OneOfN.JustMatcher<? extends R, ? super T1> 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.
    • selectFirst

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

      public <R> R tryMatch(IThrowingFunction<? super T1, ? extends R> first) throws Exception
      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.
      Returns:
      The value returned by the mapping function for the matching case.
      Throws:
      Exception - If the mapping function for the matching case throws an exception.
    • first

      public static <T1> OneOfN.Just<T1> first(T1 first)
      Type Parameters:
      T1 - Type of the value for the first case.
      Parameters:
      first - The value for the first case.
      Returns:
      A new sum type with the value for the first case.