Начиная с Java 8, default
методы были введены в интерфейсы. Фактически, это означает , что не все методы в interface
это abstract
.
Начиная с Java 9 (возможно), private
методы будут разрешены. Это означает , что не все методы в interface
это public abstract
.
Вопрос "Должны ли методы в интерфейсе Java быть объявлены с public
модификатором доступа или без него ?" был задан вопрос о переполнении стека на /programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-m
Там, в большинстве ответов утверждается, что public abstract
не следует использовать, потому что ни один метод не interface
может быть ничем, кроме public abstract
. Это уже не так.
Итак, в свете этих новых возможностей интерфейсов следует public abstract
ли использовать ключевые слова в объявлении метода интерфейса Java?
В моей конкретной среде у нас будут люди, которые являются опытными инженерами-программистами, но не имеют опыта работы с Java, время от времени читая код Java. Я чувствую, что исключение public abstract
ключевых слов теперь создаст дополнительную путаницу для тех, кто не знаком с историей того, как интерфейсы получили разные правила использования этих ключевых слов.
abstract
, становится все более запутанным. В Java 9, то же предложение может быть, «Метод интерфейса отсутствует в default
модификатор или static
модификатор или private
модификатор неявно абстрактный ...» Кроме того, вспомогательные аргументы для не явно , используя ключевые слова, а именно, что все методы интерфейса являются public abstract
, сейчас спорный.
stream
к java.util.Collection
или Map.getOrDefault()
. Альтернатива состоит в том, чтобы создать новый субинтерфейс и заставить всех упасть, как Graphics2D, и это никому не понравилось!
default
модификатор илиstatic
модификатор, неявноabstract
... Это разрешено, но не рекомендуется в качестве стиля излишне указыватьabstract
модификатор для объявления такого метода ». Почему вы ожидаете, что все должно измениться?