У меня есть метод класса «команда», который должен сохранить ArrayList в файл, но он сохраняет мусор.Метод принимает ArrayList, содержащий объекты класса (Beer), который реализует Serializable (имеющий только ключевые слова «Implements Serializable» после имени класса без реализаций метода).Это выглядит так:
public class Save implements Command {
public void execute(ArrayList<Beer> beers, String cmd []) {
if(cmd[0].equals("save")) {
File file = new File(cmd[1]);
try
{
FileOutputStream fileOut = new FileOutputStream(file);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(beers);
out.close();
}
catch(IOException i)
{
i.printStackTrace();
}
}
}
}
для списка, содержащего пиво со следующими атрибутами:
[beername] [type] [strength]
heineken idk 5.3
pilsner idk 4.2
это то, что находится в файле:
¬í sr java.utiМетод тоже в том же стиле, и он не читает мусор выше в ArrayList.
public class Load implements Command {
@SuppressWarnings("unchecked")
public void execute(ArrayList<Beer> beers, String cmd[]) {
if(cmd[0].equals("load")) {
File file = new File(cmd[1]);
try {
FileInputStream fin= new FileInputStream (file);
ObjectInputStream ois = new ObjectInputStream(fin);
beers = (ArrayList<Beer>)ois.readObject();
fin.close();
}
catch(IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Как мне изменить этот код, чтобы он сохранял только атрибуты в текстовый файл и загружал их обратно правильно?Я хотел бы придерживаться метода ObjectOutputStream readObject и writeObject.Спасибо