Ab Java 8 wurden defaultMethoden in Interfaces eingeführt. Im Endeffekt bedeutet dies, dass nicht alle Methoden in einem interfacesind abstract.
Ab Java 9 sind (möglicherweise) privateMethoden zulässig. Dies bedeutet, dass nicht alle Methoden in einem interfacesind public abstract.
Die Frage "Sollen Methoden in einer Java-Schnittstelle mit oder ohne den publicZugriffsmodifikator deklariert werden ?" wurde bei Stack Overflow unter /programming/161633/should-methods-in-a-java-interface-be-declared-with-or-with-a-public-access-m gefragt
Dort argumentierten die meisten Antworten, dass public abstractsie nicht verwendet werden sollten, da keine Methode in einem interfaceetwas anderes sein kann als public abstract. Das ist heute nicht mehr der Fall.
Sollten die public abstractSchlüsselwörter angesichts dieser neuen Funktionen von Schnittstellen in einer Java-Deklaration für Schnittstellenmethoden verwendet werden?
In meiner spezifischen Umgebung werden wir Leute haben, die erfahrene Software-Ingenieure sind, aber keine Erfahrung mit Java haben und von Zeit zu Zeit Java-Code lesen. Ich bin der Meinung, dass das public abstractWeglassen der Schlüsselwörter jetzt einen zusätzlichen Punkt der Verwirrung für diejenigen schafft, die nicht mit der Vorgeschichte vertraut sind, wie Schnittstellen zu unterschiedlichen Regeln für die Verwendung dieser Schlüsselwörter kamen.
abstractzunehmend verwickeln. In Java 9, die gleichen Satz könnte sein : „Eine Interface - Methode einen fehlt defaultModifikator oder ein staticModifikator oder ein privateModifikator ist implizit abstrakt ...“ Darüber hinaus ist die Hilfs Argumente für nicht explizit die Schlüsselwörter, nämlich, dass alle Interface - Methoden sind public abstract, sind jetzt streitig.
streamzu java.util.Collectionoder Map.getOrDefault(). Alternativ können Sie ein neues Unter-Interface erstellen und alle zum Downcast bringen, wie Graphics2D, und niemand hat das genossen!
defaultModifizierer oderstaticModifizierer ist implizitabstract... Es ist zulässig, aber aus Gründen des Stils abgeraten, denabstractModifikator für eine solche Methodendeklaration redundant anzugeben . " Warum erwarten Sie, dass sich die Dinge ändern sollten?