IF - ELSE in monad java 8

时间:2016-05-05 15:13:49

标签: java functional-programming java-8

我是java 8的新手。我有字符串列表(列表消息代码)和字符串(代码)。我正在尝试为下面的逻辑编写java 8功能方式代码。

if(messagecodes.contains(code)){
     callMethod1(message);
} else{ 
     callMethod2(message);
}

我创建了自己的类,如下所示

public class OptionalExt<T> {
    private final Optional<T> optional;
    private Predicate<T> test;

    public OptionalExt(final T optional) {
        this.optional = Optional.ofNullable(optional);
    }

    public static <T> OptionalExt<T> of(final T t) {
        return new OptionalExt<>(t);
    }

    public OptionalExt<T> condition(final Predicate<T> theTest) {
        this.test = theTest;
        return this;
    }

    public OptionalExt<T> when(final Consumer<T> consumer) {
        optional.filter(test).ifPresent(consumer);
        return this;
    }

    public void otherwise(final Consumer<T> consumer) {
        optional.filter(test.negate()).ifPresent(consumer);
    }
}

我正在使用上面这类,

 OptionalExt
        .of(code)
        .condition((codee) -> codes.contains(codee))
        .when((code1) -> callMethod1(code1))
        .otherwise((code2) -> callMethod2(code2));

还有其他方法以更多功能的方式完成上述逻辑。

0 个答案:

没有答案