public class Choices extends Object
cond(Supplier, Supplier, Supplier) is similar to switch-case-default as expression, and exists overloaded with arity on cases
ifelse(boolean, Supplier, Supplier) is if-then-else as expression. That is ternary operator with prefix syntax
ifNot(boolean, Supplier, Supplier) is like if-else-then as expression
when(boolean, Supplier) is if-then without else. Delivers null on else
whenNot(boolean, Supplier) is if-else without then. Delivers null on then
unless(Supplier, boolean, Supplier) is then-if-else as expression
unlessNull(Object, Supplier) Supplier value instead if T happen to be null. T if it is an object
mapOr(Object, Function, Supplier) return application of T to Function, unless null when Supplier value returns
doIfElse(boolean, Runnable, Runnable) ifelse for side effects
doWhen(boolean, Runnable) when for side effects
doWhenNot(boolean, Runnable) whenNot for side effects
requireAllNonNull(Object...) throws NPE if any is null
| Modifier and Type | Method and Description |
|---|---|
static <T> T |
cond(Supplier<? extends T> v0)
Always returns value of v0.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<? extends T> v1)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<? extends T> v2)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<Boolean> t2,
Supplier<? extends T> v2,
Supplier<? extends T> v3)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<Boolean> t2,
Supplier<? extends T> v2,
Supplier<Boolean> t3,
Supplier<? extends T> v3,
Supplier<? extends T> v4)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<Boolean> t2,
Supplier<? extends T> v2,
Supplier<Boolean> t3,
Supplier<? extends T> v3,
Supplier<Boolean> t4,
Supplier<? extends T> v4,
Supplier<? extends T> v5)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<Boolean> t2,
Supplier<? extends T> v2,
Supplier<Boolean> t3,
Supplier<? extends T> v3,
Supplier<Boolean> t4,
Supplier<? extends T> v4,
Supplier<Boolean> t5,
Supplier<? extends T> v5,
Supplier<? extends T> v6)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<Boolean> t2,
Supplier<? extends T> v2,
Supplier<Boolean> t3,
Supplier<? extends T> v3,
Supplier<Boolean> t4,
Supplier<? extends T> v4,
Supplier<Boolean> t5,
Supplier<? extends T> v5,
Supplier<Boolean> t6,
Supplier<? extends T> v6,
Supplier<? extends T> v7)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<Boolean> t2,
Supplier<? extends T> v2,
Supplier<Boolean> t3,
Supplier<? extends T> v3,
Supplier<Boolean> t4,
Supplier<? extends T> v4,
Supplier<Boolean> t5,
Supplier<? extends T> v5,
Supplier<Boolean> t6,
Supplier<? extends T> v6,
Supplier<Boolean> t7,
Supplier<? extends T> v7,
Supplier<? extends T> v8)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<Boolean> t2,
Supplier<? extends T> v2,
Supplier<Boolean> t3,
Supplier<? extends T> v3,
Supplier<Boolean> t4,
Supplier<? extends T> v4,
Supplier<Boolean> t5,
Supplier<? extends T> v5,
Supplier<Boolean> t6,
Supplier<? extends T> v6,
Supplier<Boolean> t7,
Supplier<? extends T> v7,
Supplier<Boolean> t8,
Supplier<? extends T> v8,
Supplier<? extends T> v9)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static <T> T |
cond(Supplier<Boolean> t0,
Supplier<? extends T> v0,
Supplier<Boolean> t1,
Supplier<? extends T> v1,
Supplier<Boolean> t2,
Supplier<? extends T> v2,
Supplier<Boolean> t3,
Supplier<? extends T> v3,
Supplier<Boolean> t4,
Supplier<? extends T> v4,
Supplier<Boolean> t5,
Supplier<? extends T> v5,
Supplier<Boolean> t6,
Supplier<? extends T> v6,
Supplier<Boolean> t7,
Supplier<? extends T> v7,
Supplier<Boolean> t8,
Supplier<? extends T> v8,
Supplier<Boolean> t9,
Supplier<? extends T> v9,
Supplier<? extends T> v10)
Evaluates each test t in order until true, in which case value of corresponding v is returned.
|
static void |
doIfElse(boolean test,
Runnable then,
Runnable otherwise)
Like ifelse without any return value, to express side effect
|
static void |
doIfNot(boolean test,
Runnable then,
Runnable otherwise)
Like ifNot without any return value, to express side effect
|
static void |
doWhen(boolean test,
Runnable then)
Like when without any return value, to express side effect
|
static void |
doWhenNot(boolean test,
Runnable then)
Like whenNo without any return value, to express side effect
|
static <T,V> V |
either(T t,
Predicate<? super T> p,
Function<? super T,? extends V> then,
Function<? super T,? extends V> otherwise)
Transforms t with then if p test t or otherwise transforms t.
|
static <T> T |
ifelse(boolean test,
Supplier<T> then,
Supplier<T> otherwise)
Evaluates then and returns its value unless test is false, in which case otherwise is evaluated and its value returned.
|
static <T> T |
ifNot(boolean test,
Supplier<T> then,
Supplier<T> otherwise)
Evaluates then and returns its value unless test is true, in which case otherwise is evaluated and its value returned.
|
static <T,V> V |
mapOr(T t,
Function<T,V> f,
Supplier<V> s)
Return application of t to f, unless t is null, in which case evaluation of supplier s returns
|
static <T> void |
requireAllNonNull(Object... nonNulls)
Throws null pointer exception if any is null
|
static <T> T |
unless(Supplier<T> then,
boolean test,
Supplier<T> otherwise)
Evaluates then and returns its value unless test is true, in which case otherwise is evaluated and its value returned.
|
static <T> T |
unlessNull(T t,
Supplier<? extends T> then)
t is delivered unless it is null, in which case the evaluation of then is returned
|
static <T> T |
when(boolean test,
Supplier<T> then)
Then is evaluated and its value returned if test is true.
|
static <T> T |
whenNot(boolean test,
Supplier<T> then)
Then is evaluated and its value returned if test is false.
|
public static <T> T cond(Supplier<? extends T> v0)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<? extends T> v1)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<? extends T> v2)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<Boolean> t2, Supplier<? extends T> v2, Supplier<? extends T> v3)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<Boolean> t2, Supplier<? extends T> v2, Supplier<Boolean> t3, Supplier<? extends T> v3, Supplier<? extends T> v4)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<Boolean> t2, Supplier<? extends T> v2, Supplier<Boolean> t3, Supplier<? extends T> v3, Supplier<Boolean> t4, Supplier<? extends T> v4, Supplier<? extends T> v5)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<Boolean> t2, Supplier<? extends T> v2, Supplier<Boolean> t3, Supplier<? extends T> v3, Supplier<Boolean> t4, Supplier<? extends T> v4, Supplier<Boolean> t5, Supplier<? extends T> v5, Supplier<? extends T> v6)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<Boolean> t2, Supplier<? extends T> v2, Supplier<Boolean> t3, Supplier<? extends T> v3, Supplier<Boolean> t4, Supplier<? extends T> v4, Supplier<Boolean> t5, Supplier<? extends T> v5, Supplier<Boolean> t6, Supplier<? extends T> v6, Supplier<? extends T> v7)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<Boolean> t2, Supplier<? extends T> v2, Supplier<Boolean> t3, Supplier<? extends T> v3, Supplier<Boolean> t4, Supplier<? extends T> v4, Supplier<Boolean> t5, Supplier<? extends T> v5, Supplier<Boolean> t6, Supplier<? extends T> v6, Supplier<Boolean> t7, Supplier<? extends T> v7, Supplier<? extends T> v8)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<Boolean> t2, Supplier<? extends T> v2, Supplier<Boolean> t3, Supplier<? extends T> v3, Supplier<Boolean> t4, Supplier<? extends T> v4, Supplier<Boolean> t5, Supplier<? extends T> v5, Supplier<Boolean> t6, Supplier<? extends T> v6, Supplier<Boolean> t7, Supplier<? extends T> v7, Supplier<Boolean> t8, Supplier<? extends T> v8, Supplier<? extends T> v9)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T cond(Supplier<Boolean> t0, Supplier<? extends T> v0, Supplier<Boolean> t1, Supplier<? extends T> v1, Supplier<Boolean> t2, Supplier<? extends T> v2, Supplier<Boolean> t3, Supplier<? extends T> v3, Supplier<Boolean> t4, Supplier<? extends T> v4, Supplier<Boolean> t5, Supplier<? extends T> v5, Supplier<Boolean> t6, Supplier<? extends T> v6, Supplier<Boolean> t7, Supplier<? extends T> v7, Supplier<Boolean> t8, Supplier<? extends T> v8, Supplier<Boolean> t9, Supplier<? extends T> v9, Supplier<? extends T> v10)
Example:
cond(() -> false, () -> "No",
() -> true, () -> "Yes",
() -> true, () -> "Already caught" ,
() -> "catch all") => "Yes"
public static <T> T ifelse(boolean test,
Supplier<T> then,
Supplier<T> otherwise)
Example:
ifelse(true, () -> "Yes", () -> "No") => "Yes"
ifelse(false, () -> "Yes", () -> "No") => "No"
public static <T,V> V either(T t,
Predicate<? super T> p,
Function<? super T,? extends V> then,
Function<? super T,? extends V> otherwise)
Example:
either("Text", text->true, String::toUpperCase, String::toLowerCase) => "TEXT"
either("Text", text->false, String::toUpperCase, String::toLowerCase) => "text"
public static <T> T when(boolean test,
Supplier<T> then)
Example:
when(true, () -> "Yes") => "Yes"
when(false, () -> "Yes") => null
public static <T> T ifNot(boolean test,
Supplier<T> then,
Supplier<T> otherwise)
Example:
ifNot(true, () -> "Yes", () -> "No") => "No"
ifNot(false, () -> "Yes", () -> "No") => "Yes"
public static <T> T whenNot(boolean test,
Supplier<T> then)
Example:
whenNot(true, () -> "Yes") => null
whenNot(false, () -> "Yes") => "Yes"
public static <T> T unless(Supplier<T> then, boolean test, Supplier<T> otherwise)
Example:
unless(() -> "Yes", false, () -> "No") => "Yes"
unless(() -> "Yes", true, () -> "No") => "No"
public static <T> T unlessNull(T t,
Supplier<? extends T> then)
Example:
unlessNull("Yes", ()->"No") => "Yes"
unlessNull(null, ()->"No") => "No"
public static <T,V> V mapOr(T t,
Function<T,V> f,
Supplier<V> s)
Example:
mapOr("Yes", String::toUpperCase,()-> "No") => "YES"
mapOr(((String)null), String::toUpperCase,()-> "No") => "No"
public static void doWhen(boolean test,
Runnable then)
public static void doWhenNot(boolean test,
Runnable then)
public static void doIfElse(boolean test,
Runnable then,
Runnable otherwise)
public static void doIfNot(boolean test,
Runnable then,
Runnable otherwise)
public static <T> void requireAllNonNull(Object... nonNulls)
Copyright © 2017. All rights reserved.