В настоящее время у меня есть программа, которая может сохранять и загружать ArrayLists типа «Variable» из файла. Однако я хотел бы иметь возможность сохранять и загружать разные объекты (экземпляры разных классов, такие как «Переменные», «Функции» и т. Д.) Только из одного файла. Вот код, который у меня есть сейчас:Сохранение/загрузка нескольких ArrayLists в один файл в Java
public SaveState(){
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(new FileOutputStream("vars.stt"));
} catch (IOException e) {
e.printStackTrace();
}
ArrayList<Variables> vars = new ArrayList<>();
vars.add(new Variables("g", 5));
vars.add(new Variables("f", -3.12));
try {
out.writeObject(vars);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public LoadState(){
ObjectInputStream in = null;
try {
in = new ObjectInputStream(new FileInputStream("vars.stt"));
} catch (IOException e) {
e.printStackTrace();
}
try {
//final Object o = in.readObject();
final ArrayList<Variables> vars = (ArrayList<Variables>) in.readObject();
System.out.println(vars.toString());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
Этот код позволяет мне загрузить только один тип объекта из файла. Есть ли способ сохранить/загрузить несколько типов объектов таким образом?
Вы не попробовали сделать базовый класс для функций и переменных и использовать список массивов типа Base Class? –
@ImeshaSudasingha Честно говоря, я не уверен, смогу ли я это сделать, это потребует от меня рефакторирования большого количества моего кода (сотни строк). Есть другое решение. – Arman
Нет, вы просто можете создать некоторый базовый класс (скажем, «ProgramElement»), они просто увеличивают класс Variables и Functions от него. Не нужно реорганизовывать код. –