在开发中,经常要存在需要将数据收集过来然后在内存中进行过滤,排序,分页的情况。写了一个过滤,排序,分页的工具,结果发现有一些问题,下面来说下这个问题。
一、问题说明
先看下面一段代码。排序时,自定义了一个比较器,通常情况下没有问题。
但是,要是String paramType = o1.getClass().getDeclaredField(paramName).getGenericType().toString();语句中o1为一个继承类,paramName为一个父类的成员变量,就会报异常:java.lang.NoSuchFieldException:XXX
Collections.sort(originList, new ParamComparator(orderBy, order));
public int compare1(T o1, T o2) {
if (paramName == null || paramName.isEmpty() || o1 == o2) {
return 0;
}
String upperParamType = paramName.substring(0, 1).toUpperCase() + paramName.substring(1);
try {
String paramType = o1.getClass().getDeclaredField(paramName).getGenericType().toString();
Method m = o1.getClass().getMethod("get" + upperPar