Десериализация загружает все объекты и их атрибуты в ArrayList, но все они равны нулю или 0 - PullRequest
0 голосов
/ 29 апреля 2020

После (что я считаю успешным) сериализации ArrayList с текстом сделать c SerializedCars.txt десериализация не работает.

Похоже, SerializeObject () работает и DeserializeObject (), потому что он знает атрибуты объектов и сколько объектов было в ArrayList до SerializeObject (), но все атрибуты пусты.

Атрибуты Name, ID, Credit, хранящиеся в ArratList объектов типа User, не передаются.

У меня есть сериализация и десериализация здесь

public static void SerializeObject(ArrayList<User> array) throws Exception{     
    try {    
         FileOutputStream fileOut = new FileOutputStream("SerializedCars.txt");
         ObjectOutputStream out = new ObjectOutputStream(fileOut);

         out.writeObject(array); 
         out.close();
         fileOut.close();

    }catch(IOException e) {
        System.out.println("serialization catch\n" + e);
    } 
}

public static ArrayList<User> DeserializeObject() throws Exception{     
    try
    {
        ArrayList<User> list = new ArrayList<User>();
        FileInputStream fis = new FileInputStream("SerializedCars.txt");
        ObjectInputStream ois = new ObjectInputStream(fis);

        list  = (ArrayList<User>) ois.readObject();

        /*
        //after Type safety: Unchecked cast from Object to ArrayList<User>, but same result

        ArrayList<User> readObject = (ArrayList<User>) ois.readObject();
        list  = readObject;

        */ 

        ois.close();
        fis.close();          


        return list;

    } catch (FileNotFoundException c) 
    {
       ArrayList<User> ReturnNullarray = null;
       System.out.println("File not found - catch1 customer deserialize\n" + c);
       return ReturnNullarray;
    }
    catch (IOException ioe) 
    {
        ArrayList<User> ReturnNullarray = null;
        System.out.println("catch2 customer deserialize\n" + ioe);
        return ReturnNullarray;
    } 
}

Здесь я вызываю DeserializeObject ():

    public static void DeserializeObjectTEST() {
    try {
        customers = DeserializeObject();
        System.out.println(customers);
    }catch(Exception e) {
        System.out.println("ERROR DeserializeObjectTES()");
        e.printStackTrace();
    }   

, и он печатает это

[models. Customer@205ce8bc, модели. Customer@535e713b, модели. Customer@3e1cf989, модели. Customer@2739c1bf, модели. Customer@60e7c4ec, модели. Customer@4010b662]

, но атрибуты каждого клиента равны нулю или 0.

Вот класс пользователя:

public class User {

    private String Name;
    private String Password;
    private String ID;
    private int Credit;
    ...

    }

Вот класс клиента:

public class Customer extends User implements Serializable{
    ...
}

Кажется, я не могу найти проблему.

...