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 zu implementieren, mithilfe der Syntax:
Class extends ClassA>
or
Class extends InterfaceB>
erfüllt nur eine Anforderung und kann nicht beide kombinieren.
Lösung
Glücklicherweise ermöglichen Java-Generika mehrere Schnittstellen oder Klassen plus Schnittstellen. Um dies zu erreichen, ändern Sie die Platzhalterdeklaration wie folgt:
Wie im Generics Tutorial von Sun dargestellt, wird durch Anhängen von & InterfaceName für jede zusätzliche erforderliche Schnittstelle ein beliebig komplexe Kombinationen möglich. Beispielsweise veranschaulicht die JavaDoc-Deklaration von Collections#max diese Komplexität:
public static> 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 für eine Klasse:
class classB { } interface interfaceC { } public class MyClass{ Class 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3