public class SortList<T> {
public void Sort(List<T> list, final String method, final String sort){
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
int ret = 0;
try{
Method m1 = ((T)a).getClass().getMethod(method, null);
Method m2 = ((T)b).getClass().getMethod(method, null);
if(sort != null && "desc".equals(sort))//倒序
ret = m2.invoke(((T)b), null).toString().compareTo(m1.invoke(((T)a), null).toString());
else//正序
ret = m1.invoke(((T)a), null).toString().compareTo(m2.invoke(((T)b), null).toString());
}catch(NoSuchMethodException ne){
System.out.println(ne);
}catch(IllegalAccessException ie){
System.out.println(ie);
}catch(InvocationTargetException it){
System.out.println(it);
}
return ret;
}
});
}
//测试
public static void main(String[] args) {
User u1 = new User(1, "zhang");
User u2 = new User(2, "wang");
User u3 = new User(3, "li");
User u4 = new User(4, "zhao");
ArrayList list = new ArrayList();
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
//方法一
SortList<User> sortList = new SortList<User>();
sortList.Sort(list, "getId", "desc"); //默认是升序排列
for(int i =0; i<list.size(); i++){
User user = (User) list.get(i);
System.out.println(user.getId()+"-username="+user.getUserName());
}
}
}