0
我正在處理我的FileSystem程序中的遞歸方法。文件系統採用通用樹的形狀。我在一般樹中有兩種類型的文件:Directory
和TextFile
。遞歸常規樹方法ClassCastException
這裏是我的findFile
遞歸方法:
//Find any file by name
private File findFile(File f, String name){
if(f.getName().equals(name))
return f;
File file = null;
for(File c : ((Directory) f).getChildren()){
file = findFile(c, name);
if(file != null)
break;
}
return file;
}
我有一個File
類Directory
和TextFile
繼承。我的getChildren()
方法僅在Directory
中返回ArrayList<File>
類型。
我遇到的問題是一旦我做了幾個目錄和文本文件。如果我將currentDirectory
更改爲更深的樹findFile
將拋出ClassCastException
。
我已經想通了,爲什麼它這樣做,我會在這裏說明吧:
D1
/ \
D2 D4
/\ \
TF1 D3 D5
在這個插圖D
代表一個Directory
,並TF
代表一個TextFile
。
在TF1
剛創建後,假設我想將我的工作目錄更改爲D4
。這將拋出ClassCastException
,因爲findFile
是預先遍歷的。
是否有反正我可以調整這種方法來識別TextFile
當它在下一行,並跳過它,以避免我的編程試圖獲得TextFile
的孩子?
謝謝!現在一切正常。 @cybersam – Aragorn300