в java, как сделать так, чтобы методы интерфейса по умолчанию нельзя было переопределить? - PullRequest
1 голос
/ 09 июля 2020
public interface NoExceptionHttpHandler extends HttpHandler {

    @Override
    final default void handle(HttpExchange exchange) throws IOException {
        NoExceptionHanlde(exchange);
    }

    void NoExceptionHandle(HttpExchange exchange);
}

Как и в приведенном выше коде, я надеюсь, что HttpHandler, используемый в моей программе, обрабатывает IOException внутри метода обработчика, поэтому интерфейс NoExceptionHttpHandler определен. Чтобы никто не нарушил правило, я надеюсь, что метод void handle(HttpExchange exchange) throws IOException нельзя переопределить, но default нельзя комбинировать с final, что мне делать, чтобы достичь своей цели без использования абстрактных классов?

Большое спасибо.

1 Ответ

0 голосов
/ 09 июля 2020

Не допускается. Он добавлен в java для развития интерфейса. Добавление новых функций для существующего интерфейса.

Вам даже не нужно использовать метод по умолчанию для нового интерфейса, его цель - изменить существующий интерфейс. Ваше требование также может быть реализовано с использованием метода stati c в интерфейсе

Если вам нужно предотвратить переопределение, вы должны использовать абстрактные классы

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