object == null或null == object?

object == null或null == object?

我听到某人null == objectobject == null 检查更好

例如:

void m1(Object obj ) {
   if(null == obj)  // Is this better than object == null ? Why ?
       return ;
   // Else blah blah}

有什么理由还是这是另一个神话?感谢帮助。


慕慕森
浏览 850回答 3
3回答

白板的微信

这可能是从C学习的习惯,以避免这种拼写错误(单一=而不是双重==):if (object = null) {将常量放在左侧的约定==在Java中并不真正有用,因为Java要求表达式if求值为一个boolean值,所以除非常量是a boolean,否则你会得到一个编译错误。参数。(如果它是一个布尔值,你不应该使用==...)

万千封印

正如其他人所说,这是从C中学到的习惯,以避免拼写错误 - 尽管即使在C中我也希望有足够警告级别的优秀编译器发出警告。正如Chandru所说,以这种方式与Java中的null进行比较只会导致问题,如果您使用的是类型变量Boolean(您不在示例代码中)。我会说这是一种非常罕见的情况,而且不值得改变你在其他地方编写代码的方式。(即使在这种情况下,我也不会费心扭转操作数;如果我想清楚地考虑反转它们,我相信我可以算出等号。)什么也没有被提及的是,很多人(当然我自己在内)发现的if (variable == constant)形式可读性更强-这是表达自己的更自然的方式。这是不要盲目地从C复制约定的原因。在假设在一个环境中可能有用的东西在另一个环境中有用之前,你应该总是质疑实践(就像你在这里做的那样:)。

慕神8447489

除了对象的类型之外,这在Java(1.5+)中没有多大价值Boolean。在这种情况下,这仍然可以很方便。if (object = null)如果是对象,则不会导致Java 1.5+中的编译失败,Boolean但会NullPointerException在运行时抛出。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java