Class OneOf3<A,​B,​C>


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

      • OneOf3

        protected OneOf3​(@Nullable
                         @Nullable Object o,
                         @NotNull
                         @NotNull Class<A> aClass,
                         @NotNull
                         @NotNull Class<B> bClass,
                         @NotNull
                         @NotNull Class<C> cClass,
                         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()).
        cClass - class 2 (to have at runtime for descriptive error messages and toString()).
        index - 0 means this represents an A, 1 represents a B, 2 represents a C, 3 means D
    • Method Detail

      • match

        public <R> R match​(@NotNull
                           @NotNull Fn1<A,​R> fa,
                           @NotNull
                           @NotNull Fn1<B,​R> fb,
                           @NotNull
                           @NotNull Fn1<C,​R> fc)
        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.
        fc - the function to be executed if this OneOf stores the third type.
        Returns:
        the return value of whichever function is executed.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object