Начиная с 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модификатор для объявления такого метода ». Почему вы ожидаете, что все должно измениться?