Как вытащить отражение из этого цикла и передать метод получения, если это возможно.
public <E> void sortBy(final String fieldName, final boolean sortAsc, List<E> list){
Collections.sort(list, new Comparator<E>() {
public int compare(E o1, E o2) {
return compareFields(o1,o2,fieldName.replace("SortBy", "get"),sortAsc);
}
}
);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
protected <E> int compareFields(E o1, E o2,String fieldName, boolean sortAsc){
try {
Comparable o1Data;
Comparable o2Data;
o1Data = (Comparable) o1.getClass().getMethod(fieldName).invoke(o1);
o2Data = (Comparable) o2.getClass().getMethod(fieldName).invoke(o2);
if(o1Data == null && o2Data == null){
return 0;
} else if (o1Data == null){
return 1;
} else if (o2Data == null){
return -1;
}
int result = o2Data.compareTo(o1Data);
return (sortAsc) ? -result : result ;
}
catch(Exception e) {
throw new RuntimeException(e);
}
}
Контекст: у меня есть много экранов с таблицами данных.Каждый из них построен из списка.Каждая таблица данных должна сортироваться по каждому из 6 столбцов.Столбцы имеют дату или строку.