【问题标题】:Java expand FilenameFilterJava展开文件名过滤器
【发布时间】:2018-05-20 06:40:27
【问题描述】:

我有一个方法,在调用 FilenameFilter 时将其传递给(作为匿名内部类)。现在,如果设置了变量,我想扩展FilenameFilter。示例:

new FilenameFilter() {

    @Override
    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(".txt");
    }
}

应该变成:

new FilenameFilter() {

    @Override
    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(".txt") || new File(dir, name).isDirectory();
    }
}

如何从第一个过滤器中获取过滤器并添加目录检查? (我不想在调用方法时用目录实现FilenameFilter,因为它可能根本不需要)

基于接受的答案的解决方案。 filenameFilter 是传递给方法的实例:

new FilenameFilter() {

    @Override
    public boolean accept(File dir, String name) {
        return filenameFilter.accept(dir, name) || new File(dir, name).isDirectory();
    }
};

【问题讨论】:

    标签: java filtering filenames


    【解决方案1】:

    你应该扩展第一个过滤器:

    class FilenameFilter1 implements FilenameFilter {
        @Override
        public boolean accept(File dir, String name) {
            return name.toLowerCase().endsWith(".txt");
        }
    }
    
    class FilenameFilter2 extends FilenameFilter1 {
        @Override
        public boolean accept(File dir, String name) {
            return super.accept(dir, name) && new File(dir, name).isDirectory();
        }
    }
    

    【讨论】:

    • 有什么方法可以在java.io.FilenameFilter 上执行此操作吗?所以用户实现了那个,我扩展它并添加我自己的过滤器部分?
    • 示例中的 FilenameFilter1 实现 FilenameFilter
    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2018-02-26
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多