反序列化二进制文件时的堆栈溢出错误

问题描述 投票:0回答:1

所以我试图将信息保存到对象数组列表中,但是一切正常,每当我尝试加载以前保存的数组列表时,我都会收到堆栈溢出错误。

我想我需要某种计数器,但是,我不熟悉Java以及反序列化器的工作方式。我已经在下面附加了我的代码-任何帮助将不胜感激。

ArrayList<Car> cars = new ArrayList<Car>();

public void addCar
{
     System.out.println("What is the make of the car?");
     String newMake = scan.next();
     System.out.println("What is the model of the car?");
     String newModel = scan.next();
     System.out.println("What year was the car produced?");
     String newYear = scan.next();
     System.out.println("How far has this car traveled?");
     String newOdometer = scan.next();
     cars.add(new Car(newMake, newModel, newYear, newOdometer));   
}

public void openFile()
    {
        Car cars = new Car();
      try {
         FileInputStream fileIn = new FileInputStream("testSave.plzwork");
         ObjectInputStream in = new ObjectInputStream(fileIn);
            try {
                cars = (Car)in.readObject();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(carClass.class.getName()).log(Level.SEVERE, null, ex);
            }
         in.close();
         fileIn.close();
        }
        catch (IOException i) {
         i.printStackTrace();
        }
    }

编辑

这是序列化代码
public void saveFile()
    { 
        try 
        {
            FileOutputStream fileOut = new FileOutputStream("testSave.plzwork");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(cars);
            out.close();
            fileOut.close();
            System.out.println("Serialized data is saved");
        } 
        catch (IOException i) {
        i.printStackTrace();
      }
    }

编辑2

这是汽车课
public Car(String year, String odometer, String make, String model)
    {
        this.make = make; 
        this.model = model; 
        this.year = year; 
        this.odometer = odometer; 
    }

这是Netbeans吐出来的错误

线程“主”中的异常java.lang.StackOverflowError在java.base / java.lang.AbstractStringBuilder.setLength(AbstractStringBuilder.java:277)在java.base / java.lang.StringBuffer.setLength(StringBuffer.java:233)在java.base / java.text.DecimalFormat.expandAffix(DecimalFormat.java:2978)在java.base / java.text.DecimalFormat.expandAffixes(DecimalFormat.java:2946)在java.base / java.text.DecimalFormat.applyPattern(DecimalFormat.java:3632)在java.base / java.text.DecimalFormat。(DecimalFormat.java:466)在java.base / sun.util.locale.provider.NumberFormatProviderImpl.getInstance(NumberFormatProviderImpl.java:187)在java.base / sun.util.locale.provider.NumberFormatProviderImpl.getNumberInstance(NumberFormatProviderImpl.java:151)在java.base / java.text.NumberFormat.getInstance(NumberFormat.java:969)在java.base / java.text.NumberFormat.getInstance(NumberFormat.java:953)在java.base / java.text.NumberFormat.getNumberInstance(NumberFormat.java:518)在java.base / java.util.Scanner.useLocale(Scanner.java:1270)在java.base / java.util.Scanner。(Scanner.java:543)在java.base / java.util.Scanner。(Scanner.java:566)在pkg30000969carsarraylist.Car。(Car.java:29)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)在pkg30000969carsarraylist.Car。(Car.java:46)

因此,我试图将信息保存到对象数组列表中,但是一切正常,每当我尝试加载以前保存的数组列表时,我都会收到堆栈溢出错误。我猜我需要一些...

java deserialization binaryfiles
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.