Мы используем следующий упрощенный код, отсекаемый для сортировки.
Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.SECONDARY);
return Comparator.comparing(entity -> {
try {
// Custom stuff here...
// Values processed here cn be either String, Integer, Boolean or Date
return (Comparable)sortFieldValue;
} catch (Exception e) {
throw new RuntimeException();
}
}, collator);
Это нормально работает для String
значений. Однако мы хотели бы использовать это повторно, чтобы также сравнить Boolean
, Integer
и т. Д. С данным коллатером это приводит к:
java.lang.Integer cannot be cast to java.lang.String
При удалении сортировщика сортировка также работает для типов данных, отличных от String
, но затем, например, Немецкие умлауты сортируются не так, как хотелось бы.
Что может быть адекватным способом «комбинировать» использование коллатера для строковых значений и игнорирование его для других типов данных?