实现的序列化

嘿,所以我不熟悉序列化,至少是我们教授希望我们采用的方式。我有一个问题,由于某种原因,即使实现了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,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,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();
        }

    }
}

gjlgjlgjlgjl 回答:实现的序列化

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3170139.html

大家都在问