比较 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 的微妙优势出于安全考虑,并且 == 和 .equals() 本质上执行相同的比较,因此通常建议在比较 Java 枚举成员时使用 ==。这个推荐也符合作者的个人喜好。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3