Ich weiß, dass instanceof TRUE zurückgibt, wenn ein Objekt eine Instanz einer bestimmten Klasse ist. Zum Beispiel:Wann wird instanceof FALSE zurückgegeben?
B extends A
C extends A
B b = new B();
C c = new C();
b instanceof A // returns TRUE
So weit so gut, also lassen Sie uns etwas geben, das wie es falsch zurückgeben sollte erscheinen würde:
c instanceof B // won't compile (error: inconvertible types)
Diese nicht kompiliert, was Sinn macht, weil es eine Aufsicht erlaubt zur Kompilierzeit abgefangen werden. Aber wenn DOESof tatsächlich falsch zurückgibt? Es scheint, die einzigen beiden Optionen sind WAHR und FEHLER. Die einzige Ausnahme, die ich denken kann, ist dies:
null instanceof A // returns FALSE
Aber durch die gleiche Logik wie oben, so scheint es, dies auch bei der Kompilierung gefangen werden soll. hier
Was bin ich? Sind wahr/Fehler die einzigen praktischen Optionen, oder ist es möglich, tatsächlich auf eine sinnvollere Art und Weise zurückzukommen, abgesehen davon, dass null als Referenzvariable angegeben wird?
Das Safaris Rechtschreibprüfung ist. Betrachten Sie den obigen Pseudocode. ;) – abc32112
mögliches Duplikat von [Wofür wird der 'instanceof'-Operator verwendet?] (Http://stackoverflow.com/questions/7313559/what-ist-instanceof-operator-used-for) –
'(Object) c instanceof B wird kompiliert. Der Grund, dass "c instanceof B" nicht kompiliert, ist, dass der Compiler statisch feststellen kann, dass ein Verweis auf ein "C" niemals ein "B" sein kann. – Radiodef