Mehrere Platzhalter für generische Methoden
Frage: Können sich verschiedene Platzhalter in generischen Methoden auf völlig unterschiedliche Typen beziehen? Wie funktioniert ein verschachtelter Platzhalter? benehmen?
Antwort:
Verschachtelte Platzhalter sind die Quelle der Verwirrung, nicht mehrere Platzhalter.
Ausschnitt Erläuterungen:
-
LOLUnknowns1: WahrscheinlichIllegal fügt eine Liste hinzu> list zu einer List
> Lol. Dies wird kompiliert, weil ? in Liste> kann auf jeden Typ verweisen, während List> kann Listen jeglicher Art enthalten.
-
LOLUnknowns1a: Wann dasselbe? wird sowohl für List> Typen schlägt die Kompilierung fehl, da die Capture-Konvertierungsregeln für verschachtelte Platzhalter die Verwendung eines einzelnen ? für beide Listen.
-
LOLUnknowns1b: Wenn ein Argument explizit null ist, ist die Kompilierung erfolgreich, da null auf jeden generischen Typ anwendbar ist und nicht an der Erfassungskonvertierung beteiligt ist.
-
DoubleLOL: Hinzufügen von zwei List
> Instanzen ist zulässig, da die Erfassungskonvertierung nicht rekursiv erfolgt, was bedeutet, dass das ? kann auf verschiedene Typen in jeder Liste verweisen.
-
IntoTheWild: Erstellen einer Liste
> für eine Liste> ist nicht zulässig, da die Capture-Konvertierung nicht rekursiv angewendet wird.
-
IntoTheWild2: Die Capture-Konvertierung kann nicht auf den inneren Listentyp angewendet werden, daher List
> ist keine List>.
Zusammenfassend lässt sich sagen, dass mehrere Platzhalter in generischen Methoden Flexibilität bei der Handhabung unbekannter Typen ermöglichen, während verschachtelte Platzhalter spezifische Einschränkungen in Bezug auf die Erfassungskonvertierung haben.
Das obige ist der detaillierte Inhalt vonKönnen mehrere Platzhalter in generischen Methoden auf unterschiedliche Typen verweisen?. 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