2017-02-26 126 views
0

我尝试的东西,我写了这个代码,空的instanceof对象

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

这是毫无疑问都返回false。令我惊讶的是,IntelliJ IDEA抱怨y总是false,但没有说任何关于x的内容。这是否意味着什么?

+3

IntelliJ给了什么信息,*完全*?也许这暗示着虽然'null instanceof Object'很明显是错误的,'o instanceof Object'仅仅是由于它已经执行的代码分析而是假的 - 如果你很早就写出了“o”的声明,这可能表明一个错误,因为你不打算检查保证为空的东西。 –

+1

你在其他情况下使用y吗?如果是这样,那么InterlliJ会报告它,因为它不是一个变量,它只是一个普通的“错误”。你最好应该使用'false'而不是含有变量的明显值。 – Imran

回答

2

这可能意味着IDEA代码分析器不支持这种“用例”。分析器可能(有意)编码以检测先前被分配给null的变量的使用,因为这在编码时是很常见的错误,但是null instance of Object这种情况并不常见,因为很少有程序员会写这个其实意味着别的东西。

有很多像这样的构造不能被静态代码分析器如Sonar,Eclipse或IDEA正确检测到。我不会担心太多,只是要知道,IDE不能发现你在代码中犯的每一个错误。

+0

所以,没有其他的实施。呵呵。 –