T - Monadic Type being wrappedpublic interface Comprehender<T>
OptionComprehender<Option> {
public Object map(Option o, Function fn){
return o.map( a-> fn.apply(a));
}
}
| Modifier and Type | Method and Description |
|---|---|
T |
empty() |
default java.lang.Object |
executeflatMap(T t,
java.util.function.Function fn)
Wrapper around flatMap
|
default java.lang.Object |
filter(T t,
java.util.function.Predicate p)
Wrapper around filter
|
java.lang.Object |
flatMap(T t,
java.util.function.Function fn) |
java.lang.Class |
getTargetClass() |
default boolean |
instanceOfT(java.lang.Object apply) |
default java.lang.Object |
liftAndFlatMap(T t,
java.util.function.Function fn)
A flatMap function that allows flatMapping to a different Monad type
will attempt to lift any non-Monadic values returned into a Monadic form
|
static java.lang.Object |
liftObject(Comprehender comp,
java.lang.Object apply) |
java.lang.Object |
map(T t,
java.util.function.Function fn)
Wrapper around map
|
T |
of(java.lang.Object o) |
default int |
priority() |
default java.lang.Object |
resolveForCrossTypeFlatMap(Comprehender comp,
T apply)
Answers the question how should this type behave when returned in a flatMap function
by another type? For example - Optional uses comp.of(opt.get()) when a value is present
and comp.empty() when no value is present.
|
default T |
unwrap(java.lang.Object o) |
static <T> T |
unwrapOtherMonadTypes(Comprehender<T> comp,
java.lang.Object apply) |
default int priority()
default T unwrap(java.lang.Object o)
default java.lang.Object filter(T t, java.util.function.Predicate p)
t - Monadic type being wrappedp - JDK Predicate to wrap t.filter ( i -> p.test(i)); java.lang.Object map(T t, java.util.function.Function fn)
t - Monadic type being wrappedfn - JDK Function to wrap t.map( i -> fn.apply(i)); default java.lang.Object liftAndFlatMap(T t, java.util.function.Function fn)
t - Monad to perform flatMap onfn - FlatMap function that returns different typedefault java.lang.Object executeflatMap(T t, java.util.function.Function fn)
t - Monadic type being wrappedfn - JDK Function to wrap t.flatMap( i -> fn.apply(i)); java.lang.Object flatMap(T t, java.util.function.Function fn)
default boolean instanceOfT(java.lang.Object apply)
T of(java.lang.Object o)
T empty()
static java.lang.Object liftObject(Comprehender comp, java.lang.Object apply)
static <T> T unwrapOtherMonadTypes(Comprehender<T> comp, java.lang.Object apply)
default java.lang.Object resolveForCrossTypeFlatMap(Comprehender comp, T apply)
comp - apply - java.lang.Class getTargetClass()