2014-10-09 4 views
3

У меня есть список bean-компонентов (List<AClass>), из которых я создаю два подкаталога на основе некоторой логики, которая включает проверку поля из класса bean, скажем, действия. еслиСписок итераций - Общая логика

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

Я создал для этого метод, и он отлично работает.

Теперь у меня есть аналогичная задача для другого класса Bean, где у меня есть List<BClass>, который также имеет поле действия и метод getAction. Я хочу создать общий метод, который будет обслуживать оба этих компонента (и другие аналогичные бобы).

Как создать такой метод?

+0

Вам действительно нужен такой метод? возможно, было бы лучше определить Predicate и использовать [коллективные собрания] (https://commons.apache.org/proper/commons-collections/javadocs/api-3.2.1/org/apache/commons/collections/CollectionUtils.html) filter()? – ursa

ответ

3

Использование List<? extends ParentClass> где ParentClass является родителем AClass и BClass

3

Если AClass и BClass общий базовый то wilcard типа может быть использован - List<? extends CommonBase>

+0

Всего через 3 секунды после себя :) – luboskrnac

+0

Но тогда каждый параметр может быть другого класса –

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; 
} 
+0

Это именно то, что я написал сейчас, спасибо за дополнительные усилия по написанию кода! – Ankit

Смежные вопросы