2017-02-26 3 views
0

ich auf etwas versuchte, und ich schrieb diesen Code,Null InstanceOf Objekt

boolean x = null instanceof Object; 
Object o = null; 
boolean y = o instanceof Object; 

Es ist keine Überraschung, beide falsch zurückgegeben. Was mich überraschte, war IntelliJ IDEA beschwerte sich y ist immer false aber nichts über x. Bedeutet das etwas?

+3

Welche Nachricht hat IntelliJ gegeben, * genau *? Vielleicht war es Andeutung, dass obwohl "null instanceof Object" ziemlich eindeutig falsch ist, "o instanceof Object" nur falsch ist, aufgrund der Codeanalyse, die es ausgeführt hat - wenn Sie die Deklaration von "o" wesentlich früher geschrieben hätten, könnte dies darauf hindeuten ein Fehler, weil Sie keine Überprüfung auf etwas haben wollten, das garantiert null war. –

+1

Verwenden Sie y in anderen Bedingungen? Wenn dies der Fall ist, wird InterlIJ es melden, weil es nicht mehr eine Variable ist, sondern nur ein einfaches 'false'. Sie sollten besser 'false' anstelle einer solchen offensichtlichen Variablen verwenden. – Imran

Antwort

2

Es bedeutet wahrscheinlich nur, dass der IDEA-Code-Analysator diesen "Anwendungsfall" nicht unterstützt. Der Analysator ist wahrscheinlich (absichtlich) codiert, um die Verwendung von Variablen zu erkennen, die zuvor null zugewiesen wurden, da dies ein ziemlich häufiger Fehler beim Codieren ist, aber der null instance of Object Fall ist nicht sehr üblich, da sehr wenige Programmierer dies schreiben würden eigentlich etwas anderes bedeuten.

Es gibt viele Konstrukte wie diese, die von statischen Codeanalysatoren wie Sonar, Eclipse oder IDEA nicht korrekt erkannt werden können. Ich würde mir nicht viele Gedanken darüber machen, nur dass die IDE nicht jeden Fehler erkennen kann, den Sie in Ihrem Code machen.

+0

Also, keine anderen Implikationen. HuH. –