Это имеет смысл для, равняется и compareTo, чтобы быть непоследовательным?

Как упоминалось здесь в репозитории PyInstaller, PyInstaller, похоже, изначально не включает драйверы для Selenium.

Обходной путь, кажется, должен явно указать, были ли установлены драйверы.

Здесь способ сделать это

7
задан Michael Myers 28 April 2009 в 02:18
поделиться

4 ответа

Позвольте мне задать вам вопрос: имеет ли смысл иметь a.compareTo (b) , возвращать 0 и a.equals (b) return false ?

Я бы вместо этого использовал Comparator . Вот почему все известные мне реализации SortedMap / SortedSet позволяют передавать компаратор при создании.

18
ответ дан 6 December 2019 в 07:28
поделиться

Из Javadoc for Comparable

Настоятельно рекомендуется (хотя и не требуется), чтобы естественные заказы были в соответствии с равными. Это так потому что отсортированные наборы (и отсортированные карты) без явных компараторов ведут себя « странно », когда они используются с элементы (или ключи), чьи естественные упорядочение несовместимо с equals

Если вы хотите, чтобы CompareTo несовместимо с equals (), рекомендуется вместо этого использовать явный компаратор, предоставив класс, реализующий Comparator.

Если это так, я должен ожидать непредсказуемый поведение, когда я не переопределяю equals (...) и hashcode ()?

Вы все равно должны переопределить equals () и hashcode (). Является ли equals () и hashcode () совместимыми с CompareTo - это другой вопрос.

4
ответ дан 6 December 2019 в 07:28
поделиться

Просто поместите этот код в метод equals и больше никогда не думать об этом:

public boolean equals(Object obj) {
    if (this == obj) return true;
    if (!(obj instanceof MyClass)) return false;
    return 0 == this.compareTo((MyClass) obj);
}
0
ответ дан 6 December 2019 в 07:28
поделиться

Effective Java рекомендует, чтобы, если вы не реализуете CompareTo , равное равно , вы должны четко указать следующее:

Рекомендуемое язык "Примечание: Этот класс имеет естественный порядок, несовместимо с equals. "

2
ответ дан 6 December 2019 в 07:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: