вспомогательная функция для метода интерфейса по умолчанию - PullRequest
1 голос
/ 18 января 2020

Мне нужно включить некоторые вспомогательные методы, чтобы помочь стандартному методу интерфейса на Java 8 - для лучшей организации кода.
Таким образом, единственная доступная опция - это квалифицировать их как 'static' - и, таким образом, оставить
Есть ли лучший способ добиться этого - переход на Java 9 не возможен.

1 Ответ

3 голосов
/ 18 января 2020

Если обновление для вас до более поздней версии является опцией, вы можете использовать методы private в интерфейсе

В Java 9 и более поздних версиях интерфейсы допускают закрытый (не абстрактные методы. См. JSL 9.4 :

Метод в теле интерфейса может быть объявлен public или private (§6.6). Если модификатор доступа не указан, метод неявно public ...

И эти закрытые методы могут также иметь статус c (тот же источник):

... Допускается, чтобы объявление метода интерфейса содержало как private, так и stati c.


Если вам нужно остаться на Java 8, вы можете использовать закрытые для пакета классы и методы (да, это не приватно для типа, но лучше использовать закрытое для пакета) альтернатива)

public interface Interface {
    default void doSomething() {
        InterfaceHelper.doSomething();
    }
}

class InterfaceHelper {
    static void doSomething() { //package-private class and method

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