【发布时间】:2020-07-18 19:41:13
【问题描述】:
我创建了一个方法,该方法根据给定的实体(我使用 JPA)返回 java 中的表的原始 html。现在我希望能够使用比较器交互对表格进行排序。所以我创建了一个比较器接口的匿名内部类,以对实体的属性进行排序。这很好用,但我现在的问题是我无法对 NullsFirst 或 Nullslast 进行排序。我尝试过的一切都不起作用。有谁知道如何解决这个问题?
这是代码:
if (!sortProperty.equals("") && sortProperty != null) {
Collections.sort(list, new Comparator<T>() {
public int compare(T e1, T e2) {
Method sortGetter = null;
try {
for (PropertyDescriptor pd : Introspector.getBeanInfo(entity).getPropertyDescriptors()) {
if (pd.getName().equals(sortProperty) && pd.getReadMethod() != null) {
sortGetter = pd.getReadMethod();
}
}
} catch (IntrospectionException e) {
e.printStackTrace();
}
try {
if (sortGetter.getReturnType().equals(String.class)) {
return sortGetter.invoke(e1).toString().compareTo(sortGetter.invoke(e2).toString());
} else if (sortGetter.getReturnType().equals(Integer.TYPE)) {
return (Integer) sortGetter.invoke(e1) - (Integer) sortGetter.invoke(e2);
} else if (sortGetter.getReturnType().equals(Date.class)) {
return ((Date) sortGetter.invoke(e1)).compareTo((Date) sortGetter.invoke(e2));
} else if (sortGetter.getReturnType().equals(Timestamp.class)) {
return ((Timestamp) sortGetter.invoke(e1)).compareTo((Timestamp) sortGetter.invoke(e2));
}
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
}
return 0;
}
});
}
【问题讨论】:
-
“我试过的一切都不起作用。有人知道如何解决这个问题吗?”你试过什么?在什么意义上它没有“解决”?
标签: java sorting generics comparator