Heim > Java > javaLernprogramm > Warum konnten Java-Schnittstellen vor Java 8 keine statischen Methoden haben?

Warum konnten Java-Schnittstellen vor Java 8 keine statischen Methoden haben?

Patricia Arquette
Freigeben: 2024-12-14 08:37:10
Original
794 Leute haben es durchsucht

Why Couldn't Java Interfaces Have Static Methods Before Java 8?

Warum Java-Schnittstellen keine statischen Methoden zulassen

Java 8-Upgrade

Ab Java 8 unterstützen Schnittstellen jetzt statische Methoden. Darüber hinaus können sie konkrete Instanzmethoden, aber keine Instanzfelder haben.

Geschichte und technische Gründe

In früheren Java-Versionen konnten Schnittstellen aus folgenden Gründen keine statischen Methoden enthalten:

  • Technische Machbarkeit: Zunächst als geringfügige Sprachänderung betrachtet, stieß der Vorschlag, statische Methoden zu Schnittstellen in Java 7 hinzuzufügen, auf unvorhergesehene Komplikationen.
  • Redundanz: Statische Methoden in Schnittstellen waren nicht unbedingt erforderlich, da der Aufruf einer statischen Methode eine Klasse erfordert, die zur Kompilierungszeit statisch bekannt ist.

Statische Methoden vs. Überschreiben

Statische Methoden können nicht überschrieben werden, da sie zur Kompilierzeit aufgelöst werden. Der dynamische Versand wird für Instanzmethoden verwendet, wenn der Compiler den konkreten Typ des Objekts nicht bestimmen und daher die aufzurufende Methode nicht auflösen kann. Da statische Methoden jedoch eine bekannte Klasse erfordern, können sie statisch aufgelöst werden, wodurch ein dynamischer Versand unnötig wird.

Mit anderen Worten: Wenn sowohl eine Oberklasse als auch eine Unterklasse statische Methoden mit derselben Signatur haben, wird die Methode der Unterklasse dies tun immer zuerst aufgerufen werden und die Methode der Oberklasse überschreiben. Dies ist jedoch konzeptionell überflüssig, da man immer die Klasse angeben kann, die die gewünschte Version der statischen Methode enthält.

Konstruktor-„Schnittstellen“

Bezüglich Ihrer zusätzlichen Bedenken bezüglich der Durchsetzung einer konstruktorähnlichen Methode für IXMLizable, beachten Sie Folgendes:

  • Die explizite Benennung des konkreten Typs stellt sicher, dass der Konstruktor beim Kompilieren überprüft werden kann Zeit.
  • IXMLizable definiert das erwartete Schnittstellenverhalten, und zusätzliche Konstruktionsanforderungen sind Implementierungsdetails.
  • Code, der mit der Schnittstelle arbeitet, erfordert keine Kenntnis des Konstruktors, während Code, der den Konstruktor benötigt, ihn kennen muss jedenfalls der konkrete Typ.

Das obige ist der detaillierte Inhalt vonWarum konnten Java-Schnittstellen vor Java 8 keine statischen Methoden haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage