我在面试中被问到这个问题.以下哪项更好用
MyInput.equals("Something");
Run Code Online (Sandbox Code Playgroud)
要么
"Something".equals(MyInput);
Run Code Online (Sandbox Code Playgroud)
谢谢
Jig*_*shi 59
我会去的
"Something".equals(MyInput);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果MyInput是,null那么它将不会抛出NullPointerException
在这里,我们确定equals()将要调用的对象是NOT NULL.
如果你希望NullPointerException你的代码做出一些决定或抛出/包装它,那么首先去.
没有性能影响
Rya*_*des 21
成为逆势者...... :)
如果MyInput为null,则第一行可能会崩溃,但这只是一个代码方便的程序员(通常使用C宿醉),当他们不想断言"MyInput"可以为null时.
如果使用第二个选项,那么这行可能不会导致NullPointerException,但可能会出现以下行.
我相信更好地了解变量的可能状态,而不是依赖一些能够减轻你良心的代码构造.
那么,我们将整个代码颠倒过来进行更改怎么样?
那些先喜欢自己的常数的人,看到这里会作何感想?
if ( 2 == i)
Run Code Online (Sandbox Code Playgroud)
在我看来,隐藏 NullPointerException 从来都不是一个好处,而是设计中的一个缺点。
如果您从未预料到会出现 NullPointerException,但却得到了一个,那么您需要让您的应用程序崩溃,跟踪日志并查看为什么会发生这种情况。这可能是一个您完全错过的商业案例:)
如果您选择期望一个 null 参数并且对单独处理它不感兴趣,那么请使用StringUtils.equals(...)等实用程序方法
也就是说,我从不允许我的任何团队成员使用第二种形式,因为它不一致且不可读。
| 归档时间: |
|
| 查看次数: |
3564 次 |
| 最近记录: |