Что-то здесь серьезно не так.Скорее всего, вы сравниваете разные пары строк, когда сравниваете их с equals
и с compareTo
.
Шансы Sun на реализацию String, получающие эту ошибку, равны нулю (IMO).И то же самое относится к любой реализации поставщика, основанной на кодовой базе Sun.Вполне возможно, что в какой-то кодовой базе, отличной от Sun, может быть ошибка в реализации String, но такого рода вещи могли бы появиться в коде других людей много лет назад.
Для справки:контракт на equals
и compareTo
заключается в том, что equals
возвращает true
, когда compareTo
возвращает 0
и наоборот .Ваше наблюдение, если оно правильное, нарушает это.Но это большое «если».