sfl4j and 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不支持惰性消息参数构造,只是为了惰性message构造(使用消息格式)。
但是你可以使用这样的东西:
if (log.isDebugEnabled()){
log.debug(expensive());
}
我有一个非常昂贵的操作来生成调试消息,我想避免每次都生成它。
所以我用这个:
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不支持惰性消息参数构造,只是为了惰性message构造(使用消息格式)。
但是你可以使用这样的东西:
if (log.isDebugEnabled()){
log.debug(expensive());
}