Java 列挙型メンバーの比較: == または equals()
Java 列挙型を使用する場合、適切な演算子に関してよくある疑問が生じます。 enum メンバーの比較に使用します。従来、開発者は次のように .equals() メソッドを使用してきました。
public useEnums(SomeEnum a) { if (a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } }
ただし、いくつかの例では、比較のための == 演算子の使用法を示しています。
public useEnums2(SomeEnum a) { if (a == SomeEnum.SOME_ENUM_VALUE) { ... } }
列挙メンバーの比較にはこれらの演算子のうちどれを優先する必要がありますか?
技術的等価性と Null 安全性
興味深いことに、どちらのアプローチも技術的には正しいです。 Java 列挙型の .equals() のソース コードを見ると、単に == に委任しているだけであることがわかります。ただし、微妙な違いがあります。== は null 安全性も提供します。
== を利用すると、列挙型メンバーの比較における潜在的な null 参照を防ぐことができます。この側面は、null 値が時折発生する可能性があるレガシー システムまたはサードパーティ ライブラリから継承されたコードを扱う場合に特に重要になります。
推奨事項
null の微妙な利点を考慮する安全性と、== と .equals() の両方が本質的に同じ比較を実行するという事実を考慮すると、Java enum メンバーを比較する場合は、一般に == を使用することをお勧めします。この推奨事項は、著者の個人的な好みとも一致しています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3