Безопасно ли использовать методы по умолчанию в качестве плохой версии черт характера в Java 8?
Некоторые утверждают, что могут сделать pandas sad, если вы используете их только ради него, потому что это круто, но это не мое намерение. Также часто напоминают о том, что были введены методы по умолчанию для поддержки эволюции API и обратной совместимости, что верно, но это не делает его неправильным или скрученным, чтобы использовать их как черты как таковые.
У меня следующий практический пример использования:
public interface Loggable {
default Logger logger() {
return LoggerFactory.getLogger(this.getClass());
}
}
Или, возможно, определите a PeriodTrait
:
public interface PeriodeTrait {
Date getStartDate();
Date getEndDate();
default isValid(Date atDate) {
...
}
}
Вполне возможно, что композиция может использоваться (или даже вспомогательные классы), но она кажется более многословной и захламленной и не позволяет использовать полиморфизм.
Итак, нормально ли/безопасно использовать методы по умолчанию в качестве основных признаков, или я должен беспокоиться о непредвиденных побочных эффектах?
Несколько вопросов относительно SO связаны с чертами Java vs Scala; это не главное. Я тоже не прошу просто высказаться. Вместо этого я ищу авторитетный ответ или, по крайней мере, проницательность для поля: если вы использовали методы по умолчанию как черты вашего корпоративного проекта, это оказалось временной бомбой?