Я полагаю, что в документации Collator
есть некоторая неопределенность.
Collator
- это Comparator<Object>
, но оно действительно нацелено на выполнение
чувствительный к локали String сравнение
(акцент мой).
Это лучше видно в документации Collator#compare
для конкретной реализации :
Эта реализация просто возвращает сравнение ((String)o1, (String)o2)
.
Полученное ClassCastException
, скорее всего, связано с тем фактом, что MyObject
не является String
.
Я бы попробовал перенести использование Collator
в вашу фактическую реализацию compareTo
:
Collections.sort(myList);
... и в вашей compareTo
реализации:
Collator.getInstance().compare(name, object.getName());
Обратите внимание, что идиома Collator.getInstance()
использует значение по умолчанию Locale
.
Поэтому, если вы планируете использовать несколько Locale
s для сравнения ваших объектов в зависимости от контекста, вам может быть лучше сортировать с помощью пользовательского Comparator
, который позволяет вводить Locale
и использовать Collator
под капотом. ,