Vergleich von Java-Enum-Mitgliedern: == oder equal()
Bei der Arbeit mit Java-Enums stellt sich häufig die Frage nach dem geeigneten Operator Zum Vergleichen von Enum-Mitgliedern verwenden. Traditionell haben Entwickler die Methode .equals() verwendet, wie in:
public useEnums(SomeEnum a) { if (a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } }
Einige Beispiele veranschaulichen jedoch die Verwendung des ==-Operators zum Vergleich:
public useEnums2(SomeEnum a) { if (a == SomeEnum.SOME_ENUM_VALUE) { ... } }
Welcher dieser Operatoren sollte für den Vergleich von Enum-Mitgliedern bevorzugt werden?
Technische Äquivalenz und Nullsicherheit
Interessanterweise sind beide Ansätze technisch korrekt. Der Quellcode für .equals() in Java-Enumerationen zeigt, dass einfach an == delegiert wird. Es gibt jedoch einen subtilen Unterschied: == bietet auch Nullsicherheit.
Durch die Verwendung von == können Sie sich vor potenziellen Nullreferenzen in Enum-Mitgliedsvergleichen schützen. Dieser Aspekt wird besonders relevant, wenn Sie mit Code arbeiten, der von Legacy-Systemen oder Bibliotheken von Drittanbietern geerbt wurde, wo gelegentlich Nullwerte auftreten können.
Empfehlung
Angesichts des subtilen Vorteils von Null Aufgrund der Sicherheit und der Tatsache, dass sowohl == als auch .equals() im Wesentlichen den gleichen Vergleich durchführen, ist es im Allgemeinen ratsam, beim Vergleich von Java-Enumerationsmitgliedern == zu verwenden. Diese Empfehlung entspricht auch den persönlichen Vorlieben des Autors.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3