Ab Java 8 wurden default
Methoden in Interfaces eingeführt. Im Endeffekt bedeutet dies, dass nicht alle Methoden in einem interface
sind abstract
.
Ab Java 9 sind (möglicherweise) private
Methoden zulässig. Dies bedeutet, dass nicht alle Methoden in einem interface
sind public abstract
.
Die Frage "Sollen Methoden in einer Java-Schnittstelle mit oder ohne den public
Zugriffsmodifikator 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 abstract
sie nicht verwendet werden sollten, da keine Methode in einem interface
etwas anderes sein kann als public abstract
. Das ist heute nicht mehr der Fall.
Sollten die public abstract
Schlü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 abstract
Weglassen 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.
abstract
zunehmend verwickeln. In Java 9, die gleichen Satz könnte sein : „Eine Interface - Methode einen fehlt default
Modifikator oder ein static
Modifikator oder ein private
Modifikator 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.
stream
zu java.util.Collection
oder Map.getOrDefault()
. Alternativ können Sie ein neues Unter-Interface erstellen und alle zum Downcast bringen, wie Graphics2D, und niemand hat das genossen!
default
Modifizierer oderstatic
Modifizierer ist implizitabstract
... Es ist zulässig, aber aus Gründen des Stils abgeraten, denabstract
Modifikator für eine solche Methodendeklaration redundant anzugeben . " Warum erwarten Sie, dass sich die Dinge ändern sollten?