我有这段代码
public void write(LinkedList<Drug> list, String file) {
try (FileOutputStream fs = new FileOutputStream(System.getProperty("user.dir") + "\\res\\" + file + ".dat"); ObjectOutputStream os = new ObjectOutputStream(fs)) {
System.out.println("Writing File...");
os.writeObject(list);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
我想要的是使用相同的方法来编写不同对象的文件,例如
LinkedList<String> temp = new LinkedList<>();
temp.add("Something");
temp.add("Something else");
write(temp, "stringlist");
并且我不想只做第二种方法
public void writeSomething(LinkedList<String> list, String file) {
try (FileOutputStream fs = new FileOutputStream(System.getProperty("user.dir") + "\\res\\" + file + ".dat"); ObjectOutputStream os = new ObjectOutputStream(fs)) {
System.out.println("Writing File...");
os.writeObject(list);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
如果您的方法没有使用列表中存储的对象类型,那么您可以将方法声明如下:
public void writeSomething(LinkedList<?> list, String file)
答案 1 :(得分:1)
如上所述回答字面的问题 - 允许该方法准确接受2种列表类型 - 有两种方法可以调用私有泛型方法:
public void writeDrugs(LinkedList<Drug> list, String file) {
writeGeneric(list, file);
}
public void writeStrings(LinkedList<String> list, String file) {
writeGeneric(list, file);
}
private void writeGeneric(LinkedList<?> list, String file) {
// Implementation here.
}
请注意,您的两个公共方法需要以不同的方式命名,否则它们将具有相同的擦除。
当然,如果您不关心它只是这两种类型,您可以简单地制作writeGeneric
(或任何您想要的方法)方法public
。