我正在编写代码,当IntelliJ建议我修正:
objectOne.equals(objectTwo);
Run Code Online (Sandbox Code Playgroud)
告诉我,方法调用equals可能会产生旧的java.lang.NullPointerException,提出一些我不知道的解决方案,Objects.equals:
Objects.equals(objectOne, objectTwo);
Run Code Online (Sandbox Code Playgroud)
阅读文档我只看到一个潜在的问题,即if objectOne == null和objectTwo == null,然后是结果true.
此时的问题是:我可以开始替换并使用这种方法代替.equals吗?这是一种安全的方法还是我错过了一些很大的禁忌症?
摆脱NPE非常有吸引力......谢谢
这个问题没有任何防弹的答案,因为它取决于该计划的需求以及它应该如何应对这一特殊情况.说,我会说:
如果有一个null是一个程序员的错误(我的意思是你将永远不会发生在你的算法中)我建议将.equals方法保留为空指针异常将出现并让你注意到问题,我的意思是,一个程序员的错误(那些我们不想要的错误!,这意味着我们写了一个不好的算法),你应该感谢申请报告它(而不是愤怒的真实客户......)
但是,如果另一方面您的应用程序也可以正常工作,而不是将其视为progrmmer错误,那么使用Object.equals将更好地满足您的需求.
一般的智慧建议记录在皮革上的异常.
希望能帮助到你!
TD; DR;
尝试调查不同类型的异常.并非所有例外都是程序员错误.
在java中,通常,已检查的异常适用于您可以预期的所有事件,您可以编写应该能够处理的代码.而unchecked异常(那些所属的RuntimeException的家庭)是您刚才无法预料(如空指针异常)的事件,因此它是IMPOSIBLE编写代码来处理事情,你不要指望(相反,你应该纠正已有代码,不写新!)
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |