Heim >Backend-Entwicklung >C++ >Wie kann ich die Klassenableitung mit Generika in Java bestimmen?
Beurteilung der Erbschaftsbeziehung in der generischen Java -Umgebung
<:> Frage:
Bei der Verwendung generischer Projekte müssen Sie feststellen, ob dem angegebenen Typobjekt eine bestimmte generische Klasse zugewiesen wird. Aufgrund der generischen Eigenschaften der Klasse schlägt die Verwendung von
-Methoden fehl.
IsSubclassOf
Beispiel:
Betrachten Sie die folgende Struktur der Klassenebene:
Ziel ist es zu bestimmen, ob die Testklasse von der Generikumklasse abgeleitet ist.
<code class="language-java">public class GenericClass<T> implements GenericInterface<T> { } public class Test extends GenericClass<SomeType> { }</code>Lösung:
Java bietet eine Lösung für dieses Problem. Zunächst erstellen wir eine praktische Funktion:
Um zu überprüfen, ob der Test aus der Geneclass abgeleitet ist, verwenden Sie bitte den folgenden Code:
<code class="language-java">static boolean isSubclassOfRawGeneric(Type generic, Type toCheck) { while (toCheck != null && toCheck != Object.class) { Type cur = toCheck instanceof ParameterizedType ? ((ParameterizedType) toCheck).getRawType() : toCheck; if (generic == cur) { return true; } toCheck = toCheck.getSuperclass(); } return false; }</code>Diese Methode überprüft die hierarchische Struktur (einschließlich Generika), um die Vererbungsbeziehung zu bestimmen. Es bietet eine starke und flexible Lösung. Beachten Sie, dass wir hier direkt verwenden, da wir nur feststellen müssen, ob der ursprüngliche Typ ohne Berücksichtigung generischer Parameter übereinstimmt. In der vorherigen Version kann in dieser Situation NULL oder falsche Typen zurückgeben, was zu einem Versagen des Urteils führt. Die verbesserte Version ist zuverlässiger.
Das obige ist der detaillierte Inhalt vonWie kann ich die Klassenableitung mit Generika in Java bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!