比较 Java 枚举成员:== 或 equals()
在使用 Java 枚举时,会出现一个常见问题,即选择适当的运算符来用于比较枚举成员。传统上,开发人员使用 .equals() 方法,如下所示:
public useEnums(SomeEnum a) { if (a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } }
但是,一些示例演示了使用 == 运算符进行比较:
public useEnums2(SomeEnum a) { if (a == SomeEnum.SOME_ENUM_VALUE) { ... } }
哪个比较枚举成员时应该首选这些运算符?
技术等效性和空安全
有趣的是,这两种方法在技术上都是正确的。 Java 枚举中 .equals() 的源代码表明它只是委托给 ==。但是,有一个细微的区别:== 还提供 null 安全性。
通过利用 ==,您可以防止枚举成员比较中潜在的 null 引用。当处理从遗留系统或第三方库继承的代码时,这一方面变得尤其重要,其中偶尔会出现 null 值。
建议
考虑 null 的微妙优势出于安全考虑,并且 == 和 .equals() 本质上执行相同的比较,因此通常建议在比较 Java 枚举成员时使用 ==。这个推荐也符合作者的个人喜好。
以上是比较 Java 枚举成员:应该使用 == 还是 equals()?的详细内容。更多信息请关注PHP中文网其他相关文章!