I am trying to save the entire class that installs it in Singleton
, not to save each array that we have independently but to save the entire class with the contents of its arrays but it explodes me and I do not know why. Can someone shed some light? I leave you code of how I have it
When executing it gives me the following errors: This comes out in a loop:
No se ha podido cargar el fichero de los Contratos Generando un
Registro Alternativo... Iniciando el Programa....
Exception in thread "main" java.lang.StackOverflowError
at java.base/java.lang.StringBuilder.<init>(StringBuilder.java:91)
at java.base/java.io.FileNotFoundException.<init>(FileNotFoundException.java:77)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:220)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:158)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:113)
at Herramientas.Ficheros.cargarPizzeria(Ficheros.java:37)
at Modelo.Pizzeria.<init>(Pizzeria.java:24)
at Modelo.Pizzeria.<init>(Pizzeria.java:29)
Singleton class:
Singleton:
public class Pizzeria implements Serializable {
private static Pizzeria instance;
private ArrayList < Pedidos > pedidos = new ArrayList < > ();
private ArrayList < Pizza > carta = new ArrayList < > ();
private ArrayList < String > ingredientesDisponibles = new ArrayList < > ();
private ArrayList < Cliente > clientes = new ArrayList < > ();
//Constructor Privado (Clase Singleton)
private Pizzeria() throws IOException {
try {
this.instance = Ficheros.cargarPizzeria();
} catch (ClassNotFoundException | FileNotFoundException | EOFException ex1) {
System.out.println("No se ha podido cargar el fichero de Pizzeria");
System.out.println("Generando un Registro Alternativo...");
System.out.println("Iniciando el Programa....");
this.instance = new Pizzeria();
}
}
//Metodo singleton
public static Pizzeria getInstance() throws IOException {
if (instance == null) {
instance = new Pizzeria();
}
return instance;
}
Class files:
//Metodo para leer los Ficheros
public static Pizzeria cargarPizzeria() throws FileNotFoundException, IOException, ClassNotFoundException {
FileInputStream FicheroTextoCliente;
ObjectInputStream FicheroBinarioPizzeria;
FicheroTextoCliente = new FileInputStream("Pizzeria.DAT");
FicheroBinarioPizzeria = new ObjectInputStream(FicheroTextoCliente);
Pizzeria pizzeria;
pizzeria = (Pizzeria) FicheroBinarioPizzeria.readObject();
return pizzeria;
}
//Método para Guardar los datos en los ficheros
public static void guardarPizzzeria(Pizzeria pizzeria) throws FileNotFoundException, IOException {
ObjectOutputStream ficheroBinarioSalida;
try (FileOutputStream ficheroTextoSalida = new FileOutputStream("Pizzeria.DAT")) {
ficheroBinarioSalida = new ObjectOutputStream(ficheroTextoSalida);
ficheroBinarioSalida.writeObject(pizzeria);
}
ficheroBinarioSalida.close();
}