【问题标题】:Using BeanComparator to sort with mapped properties使用 BeanComparator 对映射的属性进行排序
【发布时间】:2016-06-15 13:56:42
【问题描述】:

我有一个具有正常属性的对象列表和一个自定义字段值的哈希图,我正在尝试找到一种方法来根据该地图中自定义字段的值进行排序。

示例类:

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 类结果上的未知属性 'customField'+

这是我的尝试:

ComparatorChain chain = new ComparatorChain();
chain.addComparator(new BeanComparator("customField(field99)"));

Collections.sort(results, chain);

有什么想法吗?

TIA

【问题讨论】:

    标签: java comparator apache-commons-beanutils


    【解决方案1】:

    我找到了。问题是 Getter 应该返回 Object 而不是 String。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 2018-12-07
      相关资源
      最近更新 更多