列表迭代 - 通用逻辑

时间:2014-10-09 11:02:19

标签: java generics

我有一个bean列表(List<AClass>),我从中创建了两个基于某个逻辑的子列表,其中包括检查bean类中的字段,比如action。如果

bean.getAction.equals("true") - add to new sublist - List<AClass> listA
else - add to new sublist - List<AClass> listB

我为它创建了一个方法,它运行正常。

现在我对其他Bean类也有类似的任务,其中List<BClass>也有action字段和getAction方法。我想创建一个通用的方法来满足这两个bean(以及其他类似的bean)。

我该如何创建这样的方法?

3 个答案:

答案 0 :(得分:3)

使用List<? extends ParentClass>,其中ParentClassAClassBClass

的父

答案 1 :(得分:3)

如果AClassBClass共享基础,则可以使用通配符类型 - List<? extends CommonBase>

答案 2 :(得分:1)

这样的事情应该有效:

interface HasAction {
    public String getAction();
}

public class AClass implements HasAction {
    private final String action;

    public AClass (String action) {
        this.action = action;
    }

    @Override
    public String getAction() {
        return action;
    }

}
public class BClass implements HasAction {
    private final String action;

    public BClass (String action) {
        this.action = action;
    }

    @Override
    public String getAction() {
        return action;
    }

}

public <T extends HasAction> List<T> subList(List<T> list) {
    List<T> subList = new ArrayList<T> ();

    for ( T source : list ) {
        if ( source.getAction().equals("true")) {
            subList.add(source);
        }
    }
    return subList;
}
相关问题