我有一个具有普通属性的对象列表和一个自定义字段值的哈希映射,并且我试图找到一种方法来根据该地图中自定义字段的值进行排序。
示例类:
class Result {
int id;
String name;
Date date;
Map customFields;
int getId() {
return id;
}
etc....
String getCustomField(String fieldId) {
return customFields.get(fieldId);
}
public void setCustomField(String fieldId, Object value) {
customFields.put(fieldId, value);
}
}
将BeanComparator与"正常"一起使用属性列表排序很好。但尝试使用映射属性会给我:
java.lang.RuntimeException:NoSuchMethodException:java.lang.NoSuchMethodException:bean类Result上的未知属性' customField' +
以下是我尝试做的事情:
ComparatorChain chain = new ComparatorChain();
chain.addComparator(new BeanComparator("customField(field99)"));
Collections.sort(results, chain);
有什么想法吗?
TIA
答案 0 :(得分:0)
我找到了。问题是Getter应该返回Object而不是String。