如何在Java上编写“((事件,状态)->状态”)函数

时间:2019-10-29 07:08:32

标签: java pattern-matching

我想编写折叠函数,例如“((事件,状态)->状态”)。如果在Java中没有任何模式匹配且不可变的话我该怎么写?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找Java中的 功能编程

Lambda Expressions是JAVA 8中的新语言功能,已在此版本中引入。它们使您可以将功能视为方法参数,或将代码视为数据。 Lambda表达式使您可以更紧凑地表示单方法接口(称为功能接口)的实例。

在此处了解更多信息,https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#approach5

答案 1 :(得分:0)

Java 8+允许您执行此操作的一种方式是使用BiFunction。例如:

public BiFunction<Event, State, State> biFunctionMethod(){
    return (event, state) -> {
        Object obj = doSomethingWithEventAndOldState(event, state);
        return new State(obj);  // not changing the old state
    };
}

然后您将其称为:

public void run(){
    State newState = biFunctionMethod().apply(event, state);
}