Sfl4j и java 8: целевой тип этого выражения должен быть функциональным интерфейсом - PullRequest
1 голос
/ 29 апреля 2020

У меня очень дорогая операция для создания отладочного сообщения, и я хочу, чтобы оно не генерировалось каждый раз.

Поэтому я использую это:

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();
}

Что я делаю не так?

1 Ответ

3 голосов
/ 29 апреля 2020

Я не думаю, что SLF4J имеет поддержку для отложенного сообщения параметр конструкция, только для отложенного сообщения конструкция (с использованием форматирования сообщения ).

Но вы можете использовать что-то вроде этого:

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