Вы можете использовать enum
для этого:
public enum ExtensionFilter implements FilenameFilter {
PDF(".pdf"),
ZIP(".zip");
private final String extension;
private ExtensionFilter(String extension) {
this.extension = extension;
}
@Override
public boolean accept(File dir, String name) {
return (name.toLowerCase().endsWith(extension));
}
}
Теперь вы сможете использовать его следующим образом:
dir.list(ExtensionFilter.PDF)
Вы также можете перебирать их, если выneed:
for ( FilenameFilter fileNameFilter : ExtensionFilter.values() ) {
....
}
Вы также можете использовать vararg в качестве аргумента конструктора, чтобы разрешить несколько расширений для одного фильтра, и использовать имя константы в качестве значения по умолчанию, чтобы упростить его использование:
public enum ExtensionFilter implements FilenameFilter {
PDF,
ZIP(".zip", ".jar", ".war", ".ear");
private final String[] extensions;
private ExtensionFilter(String... extensions) {
if (extensions.length == 0) {
extensions = new String[] {"." + name().toLowerCase()};
}
this.extensions = extensions;
}
@Override
public boolean accept(File dir, String name) {
for (String extension : extensions) {
if (name.toLowerCase().endsWith(extension)) {
return true;
}
}
return false;
}
}