Как сериализовать /deserialize arrayList (Object)

У меня есть ArrayList<ItemList>

где ItemList:

public class ItemList {
    public ArrayList<Item> it = new ArrayList<Item>();
    public String name = "";

    public ItemList() {
    }
}

и элемент:

public class Item {
    public String name = "";
    public int count = 0;

    public Item() {
    }
}

Я пытаюсь сериализовать этот список:

try {
            FileOutputStream fileOut = new FileOutputStream(sdDir + serFile);
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(List_Of_Lists);
            out.close();
            fileOut.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Я думаю, что это работает, потому что я нахожу этот файл в папке.

Но я не могу десериализовать файл из ArrayList<ItemList>

код:

        try {
            FileInputStream fileIn = new FileInputStream(sdDir + serFile);
            ObjectInputStream in = new ObjectInputStream(fileIn);
            List_Of_Lists = (ArrayList<ItemList>) in.readObject(); 
            Log.i("palval", "dir.exists()");
            in.close();
            fileIn.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Как я могу десериализовать этот ArrayList<ItemList>? Я всегда ломаю IOException.

Ответы

Ответ 1

Для классов Item и ItemList требуется implements Serializable

Ответ 2

если вы сделали подкласс, затем добавьте метод serializabe в родительский класс, он удалит ошибку.

Ответ 3

Я предполагаю, что вы сериализовали ItemList не Item.....

ArrayList<ItemList> arr = (ArrayList<ItemList>) in.readObject();

for (ItemList a : arr) 
   {
        // In this loop by iterating arr, you will get the whole List of ItemList

   }