12 Stimmen

instanceof inkonsistente Ergebnisse bei der Erkennung von Schnittstellen liefert?

Gibt es irgendetwas Kniffliges, das ich wissen sollte über instanceof ? Ich übergebe eine Liste von Objekten durch einige Methoden und teste, ob diese Objekte eine bestimmte Schnittstelle implementieren, indem ich instanceof . In einigen Fällen, instanceof Objekte korrekt als Implementierung der Schnittstelle identifiziert, in anderen Fällen jedoch nicht. Es scheint mir widersprüchliche Ergebnisse für dasselbe Objekt an verschiedenen Stellen zu liefern. Gibt es einen Trick/Gotcha, den ich hier beachten sollte?

In Erwartung von Kommentaren, die Sie vielleicht haben:

1) Ich weiß instanceof ist schlechtes Benehmen. Ich arbeite mit einer nicht ganz perfekten Objekthierarchie, die nicht geändert werden kann, und das ist die am wenigsten schlechte Sache, die ich mir vorstellen kann.

2) Ich arbeite daran, ein Codebeispiel zu erstellen, aber ich muss meinen Code stark vereinfachen, wenn ich hier etwas Nützliches einfügen will. In der Zwischenzeit, wenn Sie dies gesehen haben, bevor und kann etwas Licht, bitte tun.

-1voto

Todd R Punkte 17676

Möglicherweise wollen Sie "isAssignable" anstelle von instanceof:

if (MyInterface.isAssignableFrom(myObject.getClass())) {
  //  do work here
}

Für Klassen, die Ihre Schnittstelle implementieren, wird true zurückgegeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X