Java 俚语 - 运行 Pattern Matcher 中的一个方法

Javaslang - running a method in Pattern Matcher

我正在尝试将 javaslang 的模式匹配合并到经典工厂模式中:

public void log(String message, Integer level) {
        Match(level).of(
                Case($(INFO), run(() -> logger.info(message))), //
                Case($(DEBUG), run(() -> logger.debug(message))), //
                Case($(WARNING), run(() -> logger.warn(message))), //
                Case($(ERROR), run(() -> logger.error(message))), //
                Case($(), run(() -> logger.info(message)))); 
}

然而,这会溢出并且所有方法都是 运行(我收到了四个对不同级别的记录器的相同调用)。

你实际上不应该调用 run,你需要一些懒惰的评估。因为我根本看不出调用 run 的理由,所以我刚刚删除了。这应该有效。

编辑: 添加了 run 以提供可推断的 return 值。

public void log(String message, Integer level) {
        Match(level).of(
                Case($(INFO), l -> run( () -> logger.info(message))), //
                Case($(DEBUG), l -> run( () -> logger.debug(message))), //
                Case($(WARNING), l -> run( () -> logger.warn(message))), //
                Case($(ERROR), l -> run( () -> logger.error(message))), //
                Case($(), l -> run( () -> logger.info(message)))); 
}