【发布时间】:2018-01-31 12:52:55
【问题描述】:
我正在通过序列化来保存我的 ArrayList:
public void Save(){
try{
FileOutputStream ficheiro = new FileOutputStream("Gravacao");
ObjectOutputStream out = new ObjectOutputStream(ficheiro);
out.writeObject(ClassListas.ListaCliente);
out.writeObject(ClassListas.ListaFornecedor);
out.writeObject(ClassListas.ListaPessoa);
out.writeObject(ClassListas.ListaStocks);
out.writeObject(ClassListas.ListaVenda);
out.writeObject(ClassListas.ListaRecurso);
out.flush();
out.close();
ficheiro.close();
}catch(IOException e){
e.printStackTrace();
}
}
我通过以下方式反序列化它:
public class FormPrincipal extends javax.swing.JFrame {
public FormPrincipal() {
initComponents();
try{
FileInputStream fx = new FileInputStream("Gravacao");
ObjectInputStream in = new ObjectInputStream(fx);
ClassListas.ListaCliente = (ArrayList<ClassCliente>) in.readObject();
ClassListas.ListaFornecedor = (ArrayList<ClassFornecedor>) in.readObject();
ClassListas.ListaPessoa = (ArrayList<ClassPessoa>) in.readObject();
ClassListas.ListaRecurso = (ArrayList<ClassRecurso>) in.readObject();
ClassListas.ListaStocks = (ArrayList<ClassStock>) in.readObject();
ClassListas.ListaVenda = (ArrayList<ClassVenda>) in.readObject();
}catch(Exception e){
e.printStackTrace();
}
}
这就是我声明 ArrayLists 的方式:
import java.util.ArrayList;
import main.ClassPessoa;
import main.ClassCliente;
import main.ClassFornecedor;
import main.ClassStock;
import main.ClassVenda;
import main.ClassRecurso;
import java.io.Serializable;
/**
*
* @author Skray
*/
public class ClassListas implements Serializable {
//Listas
public static ArrayList<ClassPessoa> ListaPessoa = new ArrayList<ClassPessoa>();
public static ArrayList<ClassCliente> ListaCliente = new ArrayList<ClassCliente>();
public static ArrayList<ClassFornecedor> ListaFornecedor = new ArrayList<ClassFornecedor>();
public static ArrayList<ClassStock> ListaStocks = new ArrayList<ClassStock>();
public static ArrayList<ClassVenda> ListaVenda = new ArrayList<ClassVenda>();
public static ArrayList<ClassRecurso> ListaRecurso = new ArrayList<ClassRecurso>();
}
问题是,有时,当我反序列化它时,它不会加载到 ArrayList,但是当我关闭并再次打开它时,它会反序列化...有人能解释一下为什么吗?
【问题讨论】:
-
考虑遵循 Java 命名约定。变量和方法应该是驼峰式。这不能解决你的问题,但它对未来很重要。我们还需要可以直接粘贴到 IDE 中并进行编译的代码——这使得故障排除更加容易。提供Minimal, Complete, and Verifiable example
标签: java serialization arraylist