Mam listę tabel VO. Obiekty te mają wiele właściwości i odpowiednie metody get/set. Chcę posortować listę tablic na podstawie właściwości, którą otrzymam w czasie wykonywania. Pozwól mi wyjaśnić szczegółowo. Moja VO jest jak tenposortuj listę obiektów na podstawie właściwości środowiska wykonawczego
public class Employee {
String name;
String id;
private String getName() {
return name;
}
private String getId() {
return id;
}
}
będę coraz ciąg „” w czasie wykonywania sortType, który może być albo „id” lub „nazwa”. Chcę posortować listę na podstawie wartości ciągu.
Próbowałem użyć komparatora i odbicia razem, ale bez powodzenia. Być może nie użyłem go poprawnie. Nie chcę używać pętli if i tworzyć nowych klas komparatorów. Jakieś inne myśli?
Próbny haczyk powinien znajdować się w nowej klasie. Oto działający kod. Jeśli chcesz użyć oddzielnej klasy dla komparatora, znajdź ją w komentarzu @ Bohemian poniżej.
String sortType = "name"; // determined at runtime
Collections.sort(results, new Comparator<Employee>() {
public int compare(Employee c1, Employee c2) {
try{
Method m = c1.getClass().getMethod("get" + StringUtils.capitalize(sortType));
String s1 = (String)m.invoke(c1);
String s2 = (String)m.invoke(c2);
return s1.compareTo(s2);
}
catch (Exception e) {
return 0;
}
}
});
proszę użyj odpowiedniego znacznika języka. – NPE
Ups .. Dodałem go teraz. – jijo
Jeśli umieścisz swój kod, który używał odbicia, być może będziemy w stanie powiedzieć, co poszło nie tak ... – akuhn