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))));
}
我正在尝试将 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))));
}