Сериализация с реализацией - PullRequest
0 голосов
/ 04 ноября 2019

Эй, я новичок в использовании сериализации, по крайней мере, так, как этого хочет наш профессор. У меня есть проблема, которая по какой-то причине не будет сериализована даже при реализации java.io.Serializable. Я пробовал прямой путь и «Сериализуемый» ни сработал. Я не уверен, что происходит не так или почему, насколько я понимаю, не должно быть никаких методов, которые мне нужно реализовать, исправить?

ОШИБКА, которую Я ПОЛУЧАЮ

java.io.NotSerializableException: Transaction
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at TransactionManager.serialize(TransactionManager.java:81)
    at Test3.main(Test3.java:62)
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: Transaction
    at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1598)
    at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
    at TransactionManager.deSerialize(TransactionManager.java:96)
    at Test3.main(Test3.java:67)
Caused by: java.io.NotSerializableException: Transaction
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at TransactionManager.serialize(TransactionManager.java:81)
    at Test3.main(Test3.java:62)

КОД

import java.awt.print.Book;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

public class TransactionManager implements Serializable {

    private ArrayList<Transaction> col;

    public TransactionManager() {
        col = new ArrayList<Transaction>();
    }

    public void add(Transaction obj) {
        col.add(obj);
    }

    public void clear() {
        col.clear();
    }

    public int getCount() {
        return col.size();
    }

    public ArrayList<Transaction> getAll() {
        ArrayList<Transaction> temp = col;
        Collections.sort(temp, new Comparator<Transaction>() {
            public int compare(Transaction s1, Transaction s2) {
                return ((Integer) s1.getId()).compareTo(s2.getId());
            }
        });
        return temp;
    }

    public ArrayList<Transaction> findBuyer(String name) {
        ArrayList<Transaction> temp = new ArrayList<>();
        for (int i = 0; i < col.size(); i++) {
            if (col.get(i).getBuyer().equals(name)) {
                temp.add(col.get(i));
            }
        }
        Collections.sort(temp, new Comparator<Transaction>() {
            public int compare(Transaction s1, Transaction s2) {
                return ((Integer) s1.getId()).compareTo(s2.getId());
            }
        });
        return temp;
    }

    public ArrayList<Transaction> findSeller(String name) {
        ArrayList<Transaction> temp = new ArrayList<>();
        for (int i = 0; i < col.size(); i++) {
            if (col.get(i).getSeller().equals(name)) {
                temp.add(col.get(i));
            }
        }
        Collections.sort(temp, new Comparator<Transaction>() {
            public int compare(Transaction s1, Transaction s2) {
                return ((Integer) s1.getId()).compareTo(s2.getId());
            }
        });
        return temp;
    }

    public Transaction findId(int ID) {
        for (int i = 0; i < col.size(); i++) {
            if (col.get(i).getId() == ID) {
                return col.get(i);
            }
        }
        return null;
    }

    public void serialize() throws IOException {
        FileOutputStream output = new FileOutputStream(new File("savePerson.ser"));
        ObjectOutputStream outputStream = new ObjectOutputStream(output);
        for (int i = 0; i < col.size(); i++) {
            outputStream.writeObject(col.get(i));
        }
        output.close();
        outputStream.close();
    }

    public void deSerialize() throws IOException, ClassNotFoundException {

        FileInputStream inputStream = new FileInputStream(new File("savePerson.ser"));
        boolean cont = true;
        try {
            ObjectInputStream ois = new ObjectInputStream(inputStream);
            while (cont) {
                Transaction obj = null;
                try {
                    obj = (Transaction) ois.readObject();
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
                if (obj != null)
                    col.add(obj);
                else
                    cont = false;
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            inputStream.close();
        }

    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...