Sie haben .class
vergessen:
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.
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
:
Anmerkungen:
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%