Heim > Java > javaLernprogramm > Wie kann ich Klassen- und Schnittstellenbeschränkungen mithilfe von Java Generics kombinieren?

Wie kann ich Klassen- und Schnittstellenbeschränkungen mithilfe von Java Generics kombinieren?

DDD
Freigeben: 2024-12-05 08:40:12
Original
968 Leute haben es durchsucht

How Can I Combine Class and Interface Constraints Using Java Generics?

Java-Generika mit Klassen- und Schnittstellenkompatibilität

In Java kann das Erstellen eines Klassenobjekts mit bestimmten Einschränkungen eine Herausforderung sein. Ein häufiges Szenario ist die Definition eines Klassenobjekts, das eine bestimmte Klasse erweitert und gleichzeitig eine bestimmte Schnittstelle implementiert. Das gleichzeitige Erreichen beider Einschränkungen mithilfe von Generika war jedoch ein häufiger Streitpunkt.

Versuche, eine Klasse zu zwingen, ClassA zu erweitern und die Schnittstelle InterfaceB mit der Syntax zu implementieren:

Class<? extends ClassA>
Nach dem Login kopieren

oder

Class<? extends InterfaceB>
Nach dem Login kopieren

erfüllt nur eine Anforderung und lässt sich nicht kombinieren beides.

Lösung

Glücklicherweise ermöglichen Java-Generika mehrere Schnittstellen oder Klassen-plus-Schnittstellen. Um dies zu erreichen, ändern Sie die Wildcard-Deklaration wie folgt:

<T extends ClassA & InterfaceB>
Nach dem Login kopieren

Wie im Generics Tutorial von Sun dargestellt, kann durch Anhängen von & InterfaceName für jede zusätzlich erforderliche Schnittstelle eine beliebig komplexe Kombination erreicht werden. Beispielsweise zeigt die JavaDoc-Deklaration von Collections#max diese Komplexität:

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
Nach dem Login kopieren

Die Wahrung der Binärkompatibilität erfordert diese komplizierten Deklarationen.

Implementierung mit Klassen- und Schnittstellenbeschränkungen

Um die gewünschte Einschränkung in einer Variablendeklaration zu implementieren, platzieren Sie eine generische Grenze auf a Klasse:

class classB { }
interface interfaceC { }

public class MyClass<T extends classB & interfaceC> {
    Class<T> variable;
}
Nach dem Login kopieren

Fazit

Java-Generika bieten flexible Möglichkeiten zum Erstellen eingeschränkter Klassen- und Schnittstellenkombinationen. Durch das Verständnis der Syntax und Einschränkungen können Entwickler diese Macht nutzen, um spezifische Anforderungen in ihrem Code durchzusetzen.

Das obige ist der detaillierte Inhalt vonWie kann ich Klassen- und Schnittstellenbeschränkungen mithilfe von Java Generics kombinieren?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage