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
DDDOriginal
2024-12-05 08:40:12988Durchsuche

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>

oder

Class<? extends InterfaceB>

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>

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)

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;
}

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!

Stellungnahme:
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