Починаючи з 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
модифікатор для такого декларації методу ". Чому ви очікуєте, що все має змінитися?