Можно ли использовать ==
на перечислениях на Java, или мне нужно использовать .equals()
? В моем тестировании всегда работает ==
, но я не уверен, гарантирован ли я этим. В частности, на перечислении нет метода .clone()
, поэтому я не знаю, можно ли получить перечисление, для которого .equals()
будет возвращать другое значение, чем ==
.Можно ли использовать == на enums в Java?
Например, это нормально:
public int round(RoundingMode roundingMode) {
if(roundingMode == RoundingMode.HALF_UP) {
//do something
} else if (roundingMode == RoundingMode.HALF_EVEN) {
//do something
}
//etc
}
Или мне нужно написать так:
public int round(RoundingMode roundingMode) {
if(roundingMode.equals(RoundingMode.HALF_UP)) {
//do something
} else if (roundingMode.equals(RoundingMode.HALF_EVEN)) {
//do something
}
//etc
}
возможно дубликат [Сравнение членов перечислений Java: == или равно()] (http://stackoverflow.com/questions/1750435/comparing-java-enum-members -или-equals) – assylias
@assylias этот вопрос пришел первым. Возможно, флаг для внимания, так как я не уверен, что эти два должны быть объединены. –
@MattBall Я думаю, что ответ на ваш вопрос, который цитирует JLS, является лучшим ответом, поэтому я решил закрыть этот. – assylias