Package org.silverpeas.core.util
Class Either<T,U>
- java.lang.Object
-
- org.silverpeas.core.util.Either<T,U>
-
public class Either<T,U> extends Object
It represents objects with two exclusive possibilities: either it is an object of type T or an object of type U.- Author:
- mmoquillon
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description <R> R
apply(Function<? super T,? extends R> leftFunction, Function<? super U,? extends R> rightFunction)
Applies one of the specified functions according to the nature of this Either: apply leftFunction if it is a left-object or apply the rightFunction if it is a right-object.T
getLeft()
If this Either is a left-object, then returns it, otherwise throwsNoSuchElementException
.U
getRight()
If this Either is a right-object, then returns it, otherwise throwsNoSuchElementException
.void
ifLeftOrRight(Consumer<? super T> leftConsumer, Consumer<? super U> rightConsumer)
Applies one of the specified consumers according to the nature of this Either: apply leftConsumer if it is a left-object or apply rightConsumer if it is a right-object.boolean
isLeft()
Is an object of type T?boolean
isRight()
Is an object of type U?static <T,U>
Either<T,U>left(T left)
Constructs an Either as a left-objectstatic <T,U>
Either<T,U>right(U right)
Constructs an Either as a right-object
-
-
-
Method Detail
-
left
@Nonnull public static <T,U> Either<T,U> left(@Nonnull T left)
Constructs an Either as a left-object- Type Parameters:
T
- the type of the left-objectU
- the type of the right-object.- Parameters:
left
- the object from which to construct an Either.- Returns:
- either an object of type T or an object of type U but whose the actual value is of type T.
-
right
@Nonnull public static <T,U> Either<T,U> right(@Nonnull U right)
Constructs an Either as a right-object- Type Parameters:
T
- the type of the left-objectU
- the type of the right-object.- Parameters:
right
- the object from which to construct an Either.- Returns:
- either an object of type T or an object of type U but whose the actual value is of type U.
-
isLeft
public boolean isLeft()
Is an object of type T?- Returns:
- true if the actual value is a left-object, false otherwise.
-
isRight
public boolean isRight()
Is an object of type U?- Returns:
- true if the actual value is a right-object, false otherwise.
-
getLeft
@Nonnull public T getLeft()
If this Either is a left-object, then returns it, otherwise throwsNoSuchElementException
.- Returns:
- the left-object of this Either.
-
getRight
@Nonnull public U getRight()
If this Either is a right-object, then returns it, otherwise throwsNoSuchElementException
.- Returns:
- the right-object of this Either.
-
ifLeftOrRight
public void ifLeftOrRight(Consumer<? super T> leftConsumer, Consumer<? super U> rightConsumer)
Applies one of the specified consumers according to the nature of this Either: apply leftConsumer if it is a left-object or apply rightConsumer if it is a right-object.- Parameters:
leftConsumer
- a consumer of a left-object.rightConsumer
- a consumer of a right-object.
-
apply
public <R> R apply(@Nonnull Function<? super T,? extends R> leftFunction, @Nonnull Function<? super U,? extends R> rightFunction)
Applies one of the specified functions according to the nature of this Either: apply leftFunction if it is a left-object or apply the rightFunction if it is a right-object.- Type Parameters:
R
- the type of the returning object computed by one of the specified functions.- Parameters:
leftFunction
- a function on a left-object and returning a given value of type R.rightFunction
- a function on a right-object and returning a given value of type R.- Returns:
- the object computed by one of the specified functions according to the actual value of this Either.
-
-