繁体   English   中英

Sfl4j 和 java 8:这个表达式的目标类型必须是函数接口

[英]Sfl4j and java 8: The target type of this expression must be a functional interface

我有一个非常昂贵的操作来生成调试消息,我想避免每次都生成它。

所以我用这个:

log.debug("{}", () -> expensive()); //gives the target type must be a functional interface

我定义:

private String expensive(){
    StringBuilder sb = new StringBuilder();
    aLongList.forEach( (element) -> sb.append(element));
    return sb.toString();
}

我究竟做错了什么?

我认为 SLF4J 不支持惰性消息参数构造,仅支持惰性消息构造(使用消息格式)。

但是你可以使用这样的东西:

if (log.isDebugEnabled()){
  log.debug(expensive());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM