Począwszy od Java 8, default
metody zostały wprowadzone do interfejsów. W efekcie oznacza to, że nie wszystkie metody interface
są abstract
.
Począwszy od Java 9 (być może), private
metody będą dozwolone. Oznacza to, że nie wszystkie metody interface
są public abstract
.
Pytanie „Czy metody w interfejsie Java powinny być deklarowane z public
modyfikatorem dostępu lub bez niego ?” został zapytany w Stack Overflow na /programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-m
Tam większość odpowiedzi twierdziła, że public abstract
nie należy ich używać, ponieważ żadna metoda w nie interface
może być inna niż public abstract
. Tak już nie jest.
Czy w związku z tymi nowymi funkcjami interfejsów należy public abstract
używać słów kluczowych w deklaracji metody interfejsu Java?
W moim specyficznym środowisku będziemy mieć ludzi, którzy są doświadczonymi inżynierami oprogramowania, ale nie mają doświadczenia w Javie, od czasu do czasu czytając kod Java. Wydaje mi się, że pominięcie public abstract
słów kluczowych stworzy dodatkowy zamieszanie dla osób, które nie są zaznajomione z historią tego, jak interfejsy mają różne reguły korzystania z tych słów kluczowych.
abstract
stają się coraz bardziej skomplikowane. W Javie 9 to samo zdanie może brzmieć: „Metoda interfejsu pozbawiona default
modyfikatora lub static
modyfikatora lub private
modyfikatora jest domyślnie abstrakcyjna ...” Ponadto dodatkowe argumenty przemawiające za tym, aby nie używać słów kluczowych, a mianowicie, że wszystkie metody interfejsu są public abstract
, są teraz dyskusyjne.
stream
do java.util.Collection
lub Map.getOrDefault()
. Alternatywą jest stworzenie nowego pod-interfejsu i zachęcenie wszystkich do spowolnienia, takich jak Graphics2D, i nikomu się to nie podobało!
default
modyfikatora lubstatic
modyfikatora jest domyślnieabstract
... Jest dozwolona, ale odradzane ze względu na styl, aby nadmiarowo określaćabstract
modyfikator takiej deklaracji metody. ” Dlaczego oczekujesz, że wszystko się zmieni?