为什么没有null == null的警告?

fxm*_*fxm 8 java eclipse

在比较两个相同的表达式时,Eclipse会显示警告:

if (1 == 1) -> warning
if (a == a) -> warning
Run Code Online (Sandbox Code Playgroud)

但是,没有显示任何警告null == null(尽管事实null == null总是如此):

if (null == null) -> no warning
Run Code Online (Sandbox Code Playgroud)

这有什么理由吗?

Mar*_*ney 3

思考这个警告条件试图防止什么是有帮助的。其目的是警告您,您没有比较您想要比较的两个变量,例如由于拼写错误(例如,foo == foo您的意思是foo == booor foo == fpp),或两个文字值(例如1 == 1)。

(当然,比较两个文字值会带来不同的问题 - 结果将始终相同,并且无论如何都应该在代码中简化为true或。)false

null == null不是这个潜在问题的案例。如果您将变量命名为接近“null”的名称,然后错误地写入“null”,则会遇到编译器无法猜测的完全不同的问题。