Починаючи з Java 8, defaultметоди були введені в інтерфейси. Ефективно це означає, що interfaceдалеко не всі методи у abstract.
Починаючи з Java 9 (можливо), privateметоди будуть дозволені. Це означає, що interfaceдалеко не всі методи є public abstract.
Питання "Чи повинні бути оголошені методи в інтерфейсі Java з publicмодифікатором доступу або без нього ?" запитували у стеку Overflow на /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модифікатор для такого декларації методу ". Чому ви очікуєте, що все має змінитися?