【发布时间】:2016-01-27 02:24:53
【问题描述】:
我正在做一个班级作业,我有一个集合,它将被过滤掉。例如,作为接口的过滤器类是一种接受 T 元素的方法(匹配)。
在我的 FilterCollection 类中:
public class FilteredCollection<T> extends AbstractCollectionDecorator<T> {
Collection<T> filterCollection;
Filter<T> currentFilter;
private FilteredCollection(Collection<T> coll, Filter<T> filter) {
super(coll);
this.filterCollection = coll;
this.currentFilter = filter;
}
public static <T> FilteredCollection<T> decorate(Collection<T> coll, Filter<T> filter) {
return new FilteredCollection<T>(coll, filter);
}
从那里我必须重写方法,例如 add、addall、contains、remove 等。
使用 add() 方法
@Override
public boolean add(T object)
{
return filterCollection.add(object);
}
但是,我需要查看对象是否与过滤器中的内容匹配,如果匹配,请不要添加它,如果不匹配,请添加它。解决这个问题的正确方法是什么?
【问题讨论】:
-
Filter在哪里定义?在某个图书馆,或者你创造的东西?在任何情况下,您似乎在add方法中有一个if语句,可以根据过滤器中定义的某些行为有条件地添加。 -
过滤器是一个接口。布尔匹配(T 元素);那是过滤器中唯一的东西。它是一个单独的类。