首页 > 解决方案 > 如何获取已创建的 MatchAllFilters 和其他过滤器的名称?需要对界面进行哪些更改?

问题描述

我需要对“所有过滤器类”进行哪些更改?对于 MatchAllFilter 类,getName 方法应返回其 ArrayList 中所有过滤器名称的字符串,我不知道该怎么做。我还想知道如何在深度过滤器中使用 getName 方法?

public interface Filter { 
   public String getName();
   public  boolean satisfies(QuakeEntry qe);
}


public class DepthFilter implements Filter {
    private double depthMin;
    private double depthMax;
    private String fName;

    public DepthFilter(double min, double max, String name) {
        depthMin = min;
        depthMax = max;
        fName = name;

    }

    public boolean satisfies(QuakeEntry qe) {
        if (qe.getDepth() >= depthMin && qe.getDepth() <= depthMax) {
            return true;
        }

        return false;
    }
}

public class MatchAllFilter implements Filter {
    private ArrayList<Filter> filters;
    private String fName;

    public MatchAllFilter() {
        filters = new ArrayList<Filter>();

    }

public void addFilter(Filter f){
    filters.add(f);

    public boolean satisfies(QuakeEntry qe) {
        for (Filter f : filters) {
            if (!f.satisfies(qe)) { // any of the filters criteria failed, then exit
                return false;
            }
        }
        return true;
    }
}

标签: javaarraylistfilterinterfacefiltering

解决方案


您的每个过滤器都implements Filter对吗?

该接口Filter有一个getName()您必须在每个类上实现的接口。

也许每个过滤器都需要在其构造函数中提供一种方法来传递String name权限?

然后应该很容易通过使用获取任何过滤器的名称getName()

例子:

DepthFilter depthFilter = new DepthFilter(1.5, 5.5, "myOwnFilter");
String name = depthFilter.getName();

推荐阅读