Салют всем гуру Java!Регистрация с использованием методов интерфейса по умолчанию
С Java8 мы можем иметь реализации по умолчанию в интерфейсах (yay!). Однако проблема возникает, если вы хотите зарегистрироваться по умолчанию.
У меня такое чувство, что неразумно вызывать .getLogger() каждый раз, когда я хочу что-то записывать по умолчанию.
Да, в интерфейсе можно определить статическую переменную, но это не является хорошей практикой для интерфейсов в любом случае +, он предоставляет регистратор (должен быть общедоступным).
Решение у меня есть на данный момент:
interface WithTimeout<Action> {
default void onTimeout(Action timedOutAction) {
LogHolder.LOGGER.info("Action {} time out ignored.", timedOutAction);
}
static final class LogHolder {
private static final Logger LOGGER = getLogger(WithTimeout.class);
}
}
LogHolder еще видна всем, которые на самом деле не имеет никакого смысла, так как он не дает каких-либо методов, и это должно быть внутренним к интерфейсу.
Знает ли кто-нибудь о лучшем решении? :)
EDIT: Я использую SLF4J подкрепленной Logback
«У меня есть ощущение, что это не разумно называть .getLogger() каждый раз, когда я хочу что-то войти метод по умолчанию «. Вы выполнили измерения производительности, чтобы поддержать это чувство? Если нет, не оптимизируйте производительность, если вам это не нужно. – Ray
Публикация публичного класса LogHolder или публичного журнала Logger LOGGER на мой взгляд не имеет большого значения. – assylias
Я не вижу причин для _yay! _ –