Począwszy od Java 8, defaultmetody zostały wprowadzone do interfejsów. W efekcie oznacza to, że nie wszystkie metody interfacesą abstract.
Począwszy od Java 9 (być może), privatemetody będą dozwolone. Oznacza to, że nie wszystkie metody interfacesą public abstract.
Pytanie „Czy metody w interfejsie Java powinny być deklarowane z publicmodyfikatorem 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 abstractnie należy ich używać, ponieważ żadna metoda w nie interfacemoże być inna niż public abstract. Tak już nie jest.
Czy w związku z tymi nowymi funkcjami interfejsów należy public abstractuż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 abstractsłó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.
abstractstają się coraz bardziej skomplikowane. W Javie 9 to samo zdanie może brzmieć: „Metoda interfejsu pozbawiona defaultmodyfikatora lub staticmodyfikatora lub privatemodyfikatora 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.
streamdo java.util.Collectionlub Map.getOrDefault(). Alternatywą jest stworzenie nowego pod-interfejsu i zachęcenie wszystkich do spowolnienia, takich jak Graphics2D, i nikomu się to nie podobało!
defaultmodyfikatora lubstaticmodyfikatora jest domyślnieabstract... Jest dozwolona, ale odradzane ze względu na styl, aby nadmiarowo określaćabstractmodyfikator takiej deklaracji metody. ” Dlaczego oczekujesz, że wszystko się zmieni?