РЕДАКТИРОВАТЬ: немного изменил код, чтобы использовать фактическое перечисление, и я все еще вижу проблему, о которой я говорил.
У меня есть странный сценарий, которого я раньше не видел, следующий код был построен на Java 6 и до того, как я думаю, но я не уверен, так как код был написан еще в 2008 году, и у нас нет способа знать, для какой версии Java этот код был написан в то время, в основном список значений перечисления сравнивается с одним значением перечисления, предполагая, что список будет содержать не более одного значения, и сравнение работало нормально на Java 6 и более ранних версиях (я я не уверен насчет версии) но она терпит неудачу с Java 7
Я посмотрел в Интернете, но не смог найти какую-либо соответствующую информацию, поэтому надеялся, что кто-нибудь сможет уточнить. Вот пример, чтобы воспроизвести проблему, о которой я говорил -
ИЗМЕНЕННЫЙ КОД -
public class TestEnum {
enum Color {
RED, GREEN, BLUE;
}
public static void main(String[] args) {
List<Color> enums = new ArrayList<Color>();
enums.add(Color.RED);
if (enums.equals(Color.RED)) {
System.out.println("Passed the conditional check!!!");
}
else {
System.out.println("Failed the conditional check!!!");
}
}
Почему приведенная выше условная проверка завершается неудачно, даже если мой список значений перечисления содержит только одну константу Color.RED, и я использую метод сравнения для сравнения? Вышеупомянутый код всегда печатает «Сбой условной проверки».