我有一个编程任务,我必须保存单独的文件,一个是日志文件,另一个是dat文件。每个人都拿了一个arraylist对象并将其保存在文件中,但每个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&#34;&lt;&#34; B&#34;&gt;&#34; ?我尝试使用ArrayList&#34;&lt;&#34; Object&#34;&gt;&#34;但那引发了一个错误。非常新的java,如果这看起来像一个简单的问题,那就很抱歉。
答案 0 :(得分:3)
基本上你需要接受一个包含可以序列化的对象的ArrayList,这可以用wildcard轻松表达,例如:
public void saveLog(ArrayList<? extends Serializable> objectArray, File fileName) {
..
}
这意味着“接受实现ArrayList
接口的未指定类型的Serializable
”,这是ObjectOutputStream
的要求。
答案 1 :(得分: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);
}
}