Statische Schnittstellenmethoden in Java überdenken
Traditionell war die Definition statischer Methoden innerhalb von Java-Schnittstellen verboten. Mit Java 8 wurde diese Einschränkung jedoch aufgehoben, sodass Schnittstellen sowohl statische als auch konkrete Instanzmethoden besitzen können. Dieser Artikel befasst sich mit den technischen Gründen für das vorherige Verbot und erläutert die Gründe für die aktuelle Genehmigung.
Statische Methoden in Schnittstellen
Zunächst die Einbeziehung statischer Methoden in Schnittstellen wurde nicht als Sprachänderung mit hoher Priorität angesehen. Ein späterer Vorschlag, sie in Java 7 hinzuzufügen, wurde aufgrund unvorhergesehener Komplexität verworfen. Mit dem Aufkommen der Lambda-Ausdrucksunterstützung von Java 8 wurden jedoch statische Schnittstellenmethoden zusammen mit überschreibbaren Instanzmethoden eingeführt.
Statische Methoden überschreiben
Obwohl Schnittstellen dies können haben jetzt statische Methoden, sie können nicht überschrieben werden. Dies liegt daran:
Konstruktorschnittstellen
Während die Java-Sprache das Erzwingen konstruktorähnlicher Methoden in Schnittstellen verbietet, ist es möglich, mithilfe konkreter Klassen eine ähnliche Funktionalität zu erreichen. Durch die Anforderung einer expliziten Benennung des konkreten Typs beim Erstellen neuer Instanzen kann der Compiler sicherstellen, dass die Klasse den gewünschten Anforderungen entspricht.
Fazit
Statische Methoden in Java-Schnittstellen bieten einen praktischen Mechanismus zum Definieren von Funktionen und Dienstprogrammen auf Klassenebene. Aufgrund der Art der statischen Methodenauflösung wird das Überschreiben statischer Methoden innerhalb von Unterklassen jedoch nicht unterstützt. Die Durchsetzung konstruktorähnlicher Methoden innerhalb von Schnittstellen ist zwar verlockend, aber kein geeignetes Entwurfsmuster, um die Konsistenz über Implementierungen hinweg sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum können Sie statische Methoden in Java-Schnittstellen nicht überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!