gpt4 book ai didi

java - 将 .equals() 替换为 Objects.equals()

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:52 27 4
gpt4 key购买 nike

当 IntelliJ 建议我更正以下内容时,我正在编写代码:

objectOne.equals(objectTwo);

告诉我方法调用 equals 可能会产生旧的 java.lang.NullPointerException ,提出一些我不知道的解决方案,Objects.equals :

Objects.equals(objectOne, objectTwo);

阅读文档我只看到一个潜在的问题,即如果 objectOne == nullobjectTwo == null ,那么结果是 true.

此时的问题是:我可以开始替换并在所有地方使用此方法而不是 .equals 吗?这是一种安全的方法还是我遗漏了一些大的禁忌症?

摆脱NPE是很有吸引力的...谢谢

最佳答案

这个问题没有万无一失的答案,因为它取决于程序的需求以及它应该如何回答这种特殊情况。说到这里,我会说:

如果有一个 null 是一个程序员的错误(我的意思是你永远不会期望在你的算法中发生的事情)我建议将 .equals 方法保留为会出现一个空指针异常,让你注意到这个问题,我的意思是,一个程序员的错误(那些我们不想要的错误!,那意味着我们写了一个错误的算法),你应该感谢应用程序的报告它(而不是愤怒的真实客户......)

但是,如果另一方面您的应用程序也可以正常工作,而不将其视为程序员的错误,那么使用 Object.equals 将更适合您的需求。

一般认为至少应该记录异常。

总结

尝试调查不同类型的异常。并非所有异常都是程序员错误。

在 Java 中,通常,checked exceptions 是针对所有那些您可以预见的事件,您可以编写应该​​能够处理的代码。而 unchecked Exceptions(那些属于 RuntimeException 家族的异常)是针对您无法预料的事件(如空指针异常),因此不可能编写代码来处理您没有预料到的事情expect(相反,您应该更正现有代码,而不是编写新代码!)。

关于java - 将 .equals() 替换为 Objects.equals(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52428516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com