0
我尝试的东西,我写了这个代码,空的instanceof对象
boolean x = null instanceof Object;
Object o = null;
boolean y = o instanceof Object;
这是毫无疑问都返回false。令我惊讶的是,IntelliJ IDEA抱怨y
总是false
,但没有说任何关于x
的内容。这是否意味着什么?
我尝试的东西,我写了这个代码,空的instanceof对象
boolean x = null instanceof Object;
Object o = null;
boolean y = o instanceof Object;
这是毫无疑问都返回false。令我惊讶的是,IntelliJ IDEA抱怨y
总是false
,但没有说任何关于x
的内容。这是否意味着什么?
这可能意味着IDEA代码分析器不支持这种“用例”。分析器可能(有意)编码以检测先前被分配给null
的变量的使用,因为这在编码时是很常见的错误,但是null instance of Object
这种情况并不常见,因为很少有程序员会写这个其实意味着别的东西。
有很多像这样的构造不能被静态代码分析器如Sonar,Eclipse或IDEA正确检测到。我不会担心太多,只是要知道,IDE不能发现你在代码中犯的每一个错误。
所以,没有其他的实施。呵呵。 –
IntelliJ给了什么信息,*完全*?也许这暗示着虽然'null instanceof Object'很明显是错误的,'o instanceof Object'仅仅是由于它已经执行的代码分析而是假的 - 如果你很早就写出了“o”的声明,这可能表明一个错误,因为你不打算检查保证为空的东西。 –
你在其他情况下使用y吗?如果是这样,那么InterlliJ会报告它,因为它不是一个变量,它只是一个普通的“错误”。你最好应该使用'false'而不是含有变量的明显值。 – Imran