от
import java.util.List;

public interface IEntityParam {

    public void validateParam(Object object);

    public default void validateParam(Object object,List Str){
        validateParam(object);
    }
}
Предположим, что
IEntityParam
- очень старый интерфейс, расширенный многими классами, и мне нужен новый метод. Я добавил новый метод с другим параметром. Но моя реализация по умолчанию не использует новый параметр List в методе по умолчанию. Технически проблем нет. Но правильно ли использовать метод по умолчанию? Или я должен сохранить этот новый метод для определенного класса, поскольку я не использую второй параметр в реализации по умолчанию. Примечание: список String, предоставленный здесь, используется только в одной реализации прямо сейчас, но может быть использован в другой реализации в будущем. Это не очень специфично и может быть использовано другой реализацией.              

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

1 Ответ

0 голосов
от
Вероятно, это неправильное использование методов по умолчанию. Известно, что методы по умолчанию способствуют обратной совместимости, когда интерфейсы / контракты развиваются с новыми методами, но проблема в вашем случае заключается в том, что не все реализации
IEntityParam
заботятся о новой версии "контракта". Методы по умолчанию концептуально являются частью контракта интерфейса. Обычный способ удовлетворить ваши текущие потребности - это расширить интерфейс:
public interface IEntityParam {
    public void validateParam(Object object);
}

public interface IEntityParamExtended extends IEntityParam {
    public default void validateParam(Object object,List
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...