Package org.organicdesign.fp.oneOf
Class OneOf4<A,B,C,D>
- java.lang.Object
-
- org.organicdesign.fp.oneOf.OneOf4<A,B,C,D>
-
public abstract class OneOf4<A,B,C,D> extends java.lang.ObjectHolds one of 4 values. SeeOneOf2for a full description. If you're passing the same type, you probably want a tuple instead.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(java.lang.Object other)inthashCode()<R> Rmatch(Fn1<A,R> fa, Fn1<B,R> fb, Fn1<C,R> fc, Fn1<D,R> fd)Languages that have union types built in have a match statement that works like this method.java.lang.StringtoString()
-
-
-
Constructor Detail
-
OneOf4
protected OneOf4(java.lang.Object o, java.lang.Class<A> aClass, java.lang.Class<B> bClass, java.lang.Class<C> cClass, java.lang.Class<D> dClass, 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()).dClass- class 3 (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(Fn1<A,R> fa, Fn1<B,R> fb, Fn1<C,R> fc, Fn1<D,R> fd)
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.fd- the function to be executed if this OneOf stores the fourth type.- Returns:
- the return value of whichever function is executed.
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equalsin classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-