我以這種方式實現java.io.FileFilter
:如何將一些值傳遞給我的java.io.FileFilter實現?
//get a list of files that:
// aren't directories
// have lastmodified times over X seconds in the past.
//And only get first Y files, even if there are more present.
private File[] getInputFiles(String inputDirectory) {
return new File(inputDirectory).listFiles(new FileFilter() {
int counter = 2; //TODO parameterize as Y
@Override
public boolean accept(File pathname) {
counter--;
return !pathname.isDirectory()
&& pathname.lastModified() <
System.currentTimeMillis() - 30 * 1000 //TODO parameterize as X
&& counter >= -1;
}
});
}
正如你所看到的,有魔力的數字在我的代碼。我想用參數替換它們。
我試過new FileFilter(int X, int Y) {...}
,但這是一個編譯時錯誤。
注:Java 7中(我認爲一些Java 8層的功能可以幫助在這裏,就不幸的是,這應該是Java 7中?)
簡單地聲明一些本地或類常量變量和匿名類體中使用它們。 – 2015-04-01 19:56:53
...或將匿名課程改爲正常課程以將計數器作爲ctor參數傳遞。 – tomse 2015-04-01 19:59:31
我可以問一下'counter'是什麼用途?起初我以爲你想限制發現文件的數量爲2 - 但這不是這種情況,例如如果前2個條目是目錄 - 則數組將爲空。 – tomse 2015-04-01 20:59:16