我有一个方法,在调用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();
}
};
最佳答案
您应该扩展第一个过滤器:
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();
}
}