Class OneOf2OrNone<A,​B>


  • public abstract class OneOf2OrNone<A,​B>
    extends Object
    Holds one of 2 values or None. See OneOf2 for a full description. If you're passing the same type, you probably want a tuple instead.
    • Constructor Detail

      • OneOf2OrNone

        protected OneOf2OrNone​(@Nullable
                               @Nullable Object o,
                               @NotNull
                               @NotNull Class<A> aClass,
                               @NotNull
                               @NotNull Class<B> bClass,
                               int index)
        Protected constructor for subclassing.
        Parameters:
        o - the item (may be null)
        aClass - class 0 (to have at runtime for descriptive error messages and toString()).
        bClass - class 1 (to have at runtime for descriptive error messages and toString()).
        index - 0 means this represents an A, 1 represents a B, 2 represents a None
    • Method Detail

      • match

        public <R> R match​(@NotNull
                           @NotNull Fn1<A,​R> fa,
                           @NotNull
                           @NotNull Fn1<B,​R> fb,
                           @NotNull
                           @NotNull Fn0<R> fz)
        Languages that have union types built in have a match statement that works like this method. Exactly one of these functions will be executed - determined by which type of item this object holds.
        Parameters:
        fa - the function to be executed if this OneOf stores the first type.
        fb - the function to be executed if this OneOf stores the second type.
        fz - the function to be executed if this OneOf stores a None.
        Returns:
        the return value of whichever function is executed.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object