BeanUtils filter Set 基于object 属性 和value compare

BeanUtils filter Set based on object property and value compare

我有一组对象,我事先不知道其确切类型。假设 Set 有 4 个对象 A、B、C 和 D。

class A{
    id = "test";
    order = "ship";
    getId();
    getOrder();
},
class B {
    id = "fail";
    order = "ship";
    getId();
    getOrder();
},class C {
    id = "fail";
    order = "ship";
    getId();
    getOrder();
},class D {
    id = "test";
    order = "ship";
    getId();
    getOrder();
},

我有一个 属性 对象数组,其中 属性 看起来像这样:

class Property {
    propName : "id"; //Will never be null.
    propValueMatch : "test"; 
},
class Property {
    propName : "order"; //Will never be null.
    propValueMatch : null; 
}

我需要遍历集合,将 属性 数组逻辑应用于集合中的每个对象和 return 符合条件的对象。它会像这样:

Check if the Object in Set has a readable property by the name : Property.propName. If TRUE { 
if Property.propValueMatch is not null : Check if that property value of the Object has the same value as defined in Property.propValueMatch. Then the object passess the criteria and should be returned.
if Property.propValueMatch is null : Then the object passess the criteria and should be returned
}

一个问题是 属性 可能存在于我们正在迭代的对象内的对象变量中。

我开始实施这个,但我确信有更简洁的方法使用 BeanUtils、属性Utils、Comaparator 等来做到这一点。

最终使用 apache commons Predicate 创建条件来过滤集合,然后使用 BeanWrapper 填充我的特定字段