Heim > Java > javaLernprogramm > Warum erlaubt Java nicht, dass Schnittstellen Anmerkungen erben?

Warum erlaubt Java nicht, dass Schnittstellen Anmerkungen erben?

Mary-Kate Olsen
Freigeben: 2024-11-04 10:58:01
Original
1061 Leute haben es durchsucht

Why doesn't Java allow interfaces to inherit annotations?

Ausschluss der Annotationsvererbung in Schnittstellen: Eine bewusste Entwurfsentscheidung

In Java erben Klassen keine Annotationen von implementierten Schnittstellen. Dieser Ausschluss wird in der Java-Dokumentation für die Annotation „Inherited“ ausdrücklich erwähnt: Annotationen auf Schnittstellen haben keine Auswirkung.

Der Grund für diese Entscheidung besteht darin, Vererbungskonflikte und Mehrdeutigkeiten zu verhindern. Betrachten Sie das folgende Beispiel:

<code class="java">@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface Baz { String value(); }

interface Foo {
    @Baz("baz")
    void doStuff();
}

interface Bar {
    @Baz("phleem")
    void doStuff();
}

class Flipp {
    @Baz("flopp")
    public void doStuff() {}
}

public class MyClass extends Flipp implements Foo, Bar {}</code>
Nach dem Login kopieren

Wenn Schnittstellen Annotationen erben könnten, dann würde die doStuff-Methode in MyClass zwei widersprüchliche Annotationen erben, @Baz("baz") von Foo und @Baz("phleem") von Bar. Dies würde zu Unklarheiten im System führen und es unklar machen, welche Annotation angewendet werden soll.

Darüber hinaus würden Annotationen auf implementierten Schnittstellen zu mehreren Vererbungsproblemen führen. Da Java die Mehrfachvererbung auf Klassenebene nicht unterstützt, würde die Zulassung der Vererbung von Annotationen von Schnittstellen praktisch zu einer Form der Mehrfachvererbung führen. Dies könnte zu noch komplexeren Szenarien und potenziellen Konflikten führen.

Daher wurde die Entscheidung getroffen, die Annotationsvererbung von Schnittstellen auszuschließen, um Klarheit zu gewährleisten, Konflikte zu vermeiden und potenziellen Problemen bei der Implementierung der Programmiersprache Java vorzubeugen.

Das obige ist der detaillierte Inhalt vonWarum erlaubt Java nicht, dass Schnittstellen Anmerkungen erben?. 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