2015-11-08 92 views
0

我有一個編程任務,我必須保存單獨的文件,一個日誌文件和另一個dat文件。每個人都拿了一個數組列表對象並將其保存在文件中,但每個數組列表都不相同。我是在一段時間緊縮,所以我最終做出了兩個單獨的功能,但我想知道是否有一個更模塊化的方式做到這一點。因此,例如:創建一個需要任何類型的Arraylist的函數?

public void saveLog (ArrayList<A> objectArray, File fileName) throws IOException { 
    if (!fileName.exists()) { 
     logFile.createNewFile(); 
    } 

    FileOutputStream fileoutput = new FileOutputStream(fileName); 
    ObjectOutputStream output = new ObjectOutputStream(fileoutput); 
    output.writeObject(objectArray); 
    output.close(); 
    fileoutput.close(); 

} 

有沒有辦法「>‘重新編寫此所以它也將採取的ArrayList’<」 B?我嘗試使用ArrayList「<」Object「>」但拋出一個錯誤。如果這看起來像一個簡單的問題,非常新的Java非常抱歉。

回答

0

你可以使方法通用A(我更喜歡List接口)。另外,我更喜歡try-with-resources Statement。像

public <A> void saveLog(List<A> objectArray, File fileName) 
     throws IOException { 
    if (!fileName.exists()) { 
     logFile.createNewFile(); 
    } 
    try (FileOutputStream fileoutput = new FileOutputStream(fileName); 
      ObjectOutputStream output = new ObjectOutputStream(fileoutput)) { 
     output.writeObject(objectArray); 
    } 
} 
3

基本上你需要接受它包含了可序列化對象的ArrayList,這可以很容易地用wildcard表達,例如:

public void saveLog(ArrayList<? extends Serializable> objectArray, File fileName) { 
    .. 
} 

這意味着「接受不明的ArrayList實現Serializable接口「的類型,這是ObjectOutputStream的要求。

+0

工作,謝謝! – Drivebyluna

相關問題