So identifizieren Sie Objekttypen in Java [duplizieren]

8

Ich habe folgende unvollständige Methode zum Vergleichen des Objekttyps eines bestimmten Objekts

%Vor%

können wir diese Methode wie

nennen %Vor%

diese Methode funktioniert nicht wirklich, bitte helfen Sie mir, damit es funktioniert

    
Harsha 10.05.2012, 09:49
quelle

4 Antworten

20

Sie haben .class vergessen:

%Vor%

Beachten Sie, dass diese Art von Code normalerweise das Zeichen für ein schlechtes OO-Design ist.

Beachten Sie auch, dass der Vergleich der Klasse eines Objekts mit einer Klasse und die Verwendung von instance nicht dasselbe ist. Zum Beispiel:

%Vor%

ist falsch, während

%Vor%

ist wahr.

Ob das eine oder das andere verwendet werden muss, hängt von Ihren Anforderungen ab.

    
JB Nizet 10.05.2012, 09:51
quelle
12

Sie können Klassen-Token miteinander vergleichen, also könnten Sie value.getClass() == Integer.class verwenden. Der einfachere und kanonischere Weg ist jedoch die Verwendung von instanceof :

%Vor%

Anmerkungen:

  • Der einzige Unterschied zwischen den beiden ist, dass der Vergleich von Klassen-Token nur exakte Übereinstimmungen erkennt, während instanceof C auch für Unterklassen von C übereinstimmt. In diesem Fall sind jedoch alle aufgelisteten Klassen final , also haben sie keine Unterklassen. Daher ist instanceof wahrscheinlich hier in Ordnung.
  • wie JB Nizet sagte, solche Überprüfungen sind nicht OO-Design. Möglicherweise können Sie dieses Problem auf eine häufigere Weise lösen, z. B.

    %Vor%
Péter Török 10.05.2012 09:51
quelle
3

Verwenden Sie value instanceof YourClass

    
Konstantin V. Salikhov 10.05.2012 09:51
quelle
3

Sie möchten instanceof :

%Vor%

Dies gilt auch für Unterklassen, was normalerweise das ist, was Sie wollen, und es ist auch null-sicher. Wenn Sie genau die gleiche Klasse benötigen, können Sie

verwenden %Vor%

oder

%Vor%     
Thilo 10.05.2012 09:51
quelle

Tags und Links