У меня есть программа, в которой я пытаюсь реализовать сохранение и загрузку объектов, однако я не могу заставить загрузку работать после закрытия программы, поэтому эффективно только сохранение и загрузка работают, пока программа открыта, но нетданные всегда загружаются после запуска программы.Я предполагаю, что это как-то связано с обертыванием.Я создал тестовую программу, чтобы посмотреть, смогу ли я заставить ее работать, просто используя простой класс Person.Я храню свои объекты Peson в ArrayList и сериализую его, а затем десериализую.В настоящее время я храню все загруженные объекты Person в JComboBox.Я посмотрел онлайн и не смог найти ничего, что поможет.Также обратите внимание, что я знаю, что использование сериализации не лучший способ сохранения объектов, но это то, что подходит для моей программы.
Класс моего приложения:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
public class App extends JFrame {
public static JComboBox<Person> peopleBox;
public App(){
try {
Person.peopleList = loadList();
}
catch(IOException | ClassNotFoundException e){
System.out.println(e.getMessage());
}
try {
saveList(Person.peopleList);
}catch (IOException e){
System.out.println(e.getMessage());
}
peopleBox = new JComboBox<>();
peopleBox.setModel(getComboBoxModel(Person.peopleList));
add(peopleBox);
pack();
setSize(600, 400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public DefaultComboBoxModel<Person> getComboBoxModel(ArrayList<Person> peopleList){
Person[] comboBoxModel = peopleList.toArray(new Person[0]);
return new DefaultComboBoxModel<>(comboBoxModel);
}
public static void saveList(ArrayList<Person> peopleList) throws IOException {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("test.bin"));
objectOutputStream.writeObject(peopleList);
}
public static ArrayList<Person> loadList() throws IOException, ClassNotFoundException {
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("test.bin"));
Person.peopleList = (ArrayList<Person>) objectInputStream.readObject();
return Person.peopleList;
}
public static void main(String[] args){
// Person p = new Person("Sean", 22);
try {
saveList(Person.peopleList);
}catch (IOException e){
System.out.println(e.getMessage());
}
App app = new App();
app.pack();
app.setVisible(true);
}
}
Класс пользователя
import java.io.Serializable;
import java.util.ArrayList;
public class Person implements Serializable {
public int age;
public String name;
public static ArrayList<Person> peopleList = new ArrayList<>();
public Person(String name, int age){
this.age = age;
this.name = name;
peopleList.add(this);
for(Person p : peopleList){
System.out.println(p.toString());
}
}
public Person(){
}
public String toString(){
return "Name : " + name + " Age: " + age;
}
}
Я ожидаю, когда сохраню список вфайл «test.bin», закройте программу, затем снова откройте ее, чтобы загрузить список и отобразить объекты, которые я создал до того, как я закрыл программу.Я ценю любую помощь, спасибо.