Ist dies der richtige Weg, um zu überprüfen, ob das Objekt eine Instanz der Klasse ist?
Ich habe einige Suchen durchgeführt und es scheint, dass dies für eine generische Klasse nicht funktioniert.
Es ist unklar, was Sie hier testen wollen, aber hier sind ein paar Möglichkeiten:
item
a T
? Ja. Ansonsten könnte es vermutlich nicht in die Methode isMember
übergeben werden. Der Compiler würde es nicht zulassen. (Siehe Alex 'Einschränkung in den Kommentaren unten.) Ist item
a Test
? Ihre isMember
-Methode, wie sie geschrieben wurde, würde dies testen, aber ich achte hier auf einen Code-Geruch. Warum sollte ein T
auch ein Test
sein, aber nur ein Teil der Zeit? Vielleicht möchten Sie noch einmal überdenken, wie Sie Ihre Kurse organisieren. Wenn dies wirklich gewünscht ist, könnte Ihre Methode wie folgt geschrieben werden:
Was die Frage aufwirft: Warum eine solche Methode überhaupt? Was ist einfacher zu schreiben?
%Vor%oder
%Vor%Ich würde behaupten, dass der erste einfacher ist und die meisten Java-Entwickler verstehen, was es leichter bedeutet als eine benutzerdefinierte Methode.
Ist item
a Test<T>
? Es gibt keine Möglichkeit, dies zur Laufzeit zu wissen, da Java Generics mittels Löschen implementiert. Wenn dies das ist, was Sie wollen, müssen Sie die Methodensignatur wie Mike Myers 'Beispiel ändern.
T
ist keine Variable, sondern ein Platzhalter für eine Klasse, die zur Laufzeit definiert wird. Generics sind ein Kompilierzeit-Feature, deshalb fügen sie Checks zur Kompilierzeit hinzu, die zur Laufzeit keine Bedeutung haben. Wir können nur den Typ des referenzierten Objekts zur Laufzeit überprüfen, der im Code ein Super-Class-Typ sein könnte. Wenn wir den Typ T
als Parameter an die Methode übergeben wollen, müssen wir uns nur wie folgt nähern:
oder
%Vor%Beachten Sie, dass der Typ möglicherweise nicht derselbe ist wie hier, um zu sehen, wie man manipuliert:
%Vor%Öffentliche Klasse LinkList {
%Vor%}
Es tut mir leid, ich kann keine Frage als Antwort posten.
Die Klasse LinkList ist eine generische Klasse. Die Funktion besteht darin, zu prüfen, ob das Element zur Klasse gehört. überprüfe ob das gleiche T hat.
Tags und Links java class generics instanceof