Heim >Backend-Entwicklung >C++ >Wie kann ich die Klassenableitung mit Generika in Java bestimmen?

Wie kann ich die Klassenableitung mit Generika in Java bestimmen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-24 19:02:14522Durchsuche

How to Determine Class Derivation with Generics in Java?

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!

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