1 package net
.kezvh
.functional
.lambda
;
5 import net
.kezvh
.collections
.Map2
.Map2
;
6 import net
.kezvh
.lang
.UtilityClass
;
11 public final class Operations
extends UtilityClass
{
15 public static final Predicate2
<?
, ?
> EQUALS
= new Predicate2
<Object
, Object
>() {
17 * @see net.kezvh.functional.lambda.L2#op(java.lang.Object, java.lang.Object)
18 * @param param1 param1
19 * @param param2 param2
23 public Boolean
op(final Object param1
, final Object param2
) {
24 return (param1
== null) ? param2
== null : param1
.equals(param2
);
32 @SuppressWarnings("unchecked")
33 public static final <T
> Predicate2
<T
, T
> EQUALS() {
34 return (Predicate2
<T
, T
>) Operations
.EQUALS
;
42 public static final <T
> L0
<T
> CONSTANT(final T t
) {
57 public static final <S
, T
> L1
<S
, T
> CONSTANT(final S s
) {
58 return new L1
<S
, T
>() {
59 public S
op(final T param
) {
72 public static final <S
, T
, U
> L2
<S
, T
, U
> CONSTANT(final S s
) {
73 return new L2
<S
, T
, U
>() {
74 public S
op(final T param
, final U param2
) {
88 public static final <S
, T
, U
> L1
<S
, U
> compose(final L1
<S
, T
> a
, final L1
<T
, U
> b
) {
89 return new L1
<S
, U
>() {
90 public S
op(final U param
) {
91 return a
.op(b
.op(param
));
100 * @param defaultValue COMMENT
103 public static final <S
, T
> L1
<S
, T
> forMap(final Map
<T
, S
> map
, final S defaultValue
) {
104 return new L1
<S
, T
>() {
105 public S
op(final T param
) {
106 if (map
.containsKey(param
))
107 return map
.get(param
);
115 * @param <K1> COMMENT
116 * @param <K2> COMMENT
118 * @param defaultValue COMMENT
121 public static final <D
, K1
, K2
> L2
<D
, K1
, K2
> forMap2(final Map2
<K1
, K2
, D
> map
, final D defaultValue
) {
122 return new L2
<D
, K1
, K2
>() {
123 public D
op(final K1 param1
, final K2 param2
) {
124 return map
.get(param1
, param2
);
131 * @return map which returns its argument
133 public static final <T
> L1
<T
, T
> identity() {
134 return new L1
<T
, T
>() {
135 public T
op(final T param
) {