Как я могу исправить это java .io.NotSerializableException: ошибка в java? - PullRequest
1 голос
/ 28 мая 2020

Я новичок в java и не знаю, как исправить эту java.io.NotSerializableException ошибку.

Я пытаюсь использовать кнопку добавления на GUI, чтобы добавить объект в список массивов. Затем запишите этот объект в файл, чтобы я мог прочитать его обратно.

Вот код, который я использую для класса Branch, который реализует Java Serializable:

import java.io.Serializable;

public class Branch implements Serializable{
    private String branch_name;
    private String branch_address;

    public Branch(String Bname, String Baddress) {
        this.branch_name = Bname;
        this.branch_address = Baddress;

        public String getbranch_name(){
            return branch_name;
        }

        public String getbranch_address(){
            return branch_address;
        }

        public void show_branch_details() {
            System.out.println( " The branch name is : " + getbranch_name()
                    + " branch address :"+ getbranch_address()
        }
    }
}

Вот код для кнопки добавления:

ArrayList<Branch> BranchList = new ArrayList<Branch>();
JButton AddBranch = new JButton("ADD BRANCH");
AddBranch.setBounds(10, 35, 161, 23);
AddBranch.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String Bname = branchNameField.getText();
        String Baddress = branchAddressField.getText();

        Branch A = new Branch(Bname, Baddress);

        BranchList.add(A);

        for (int i = 0; i < BranchList.size(); i++) {
            displayInfo.append(BranchList.get(i).getbranch_name() +);
        }
        System.out.println("The ArrayList has " + BranchList.size());
        for (int i = 0; i < BranchList.size(); i++) {
            System.out.println(BranchList.get(i).getbranch_name());
        }
        try {
            FileOutputStream fos = new FileOutputStream("branch.dat");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            //oos.writeObject(BranchList);
            for (int b = 0; b < BranchList.size(); b++) {
                oos.writeObject(BranchList.get(b));
            }
            oos.flush();
            oos.close();

            FileInputStream fis = new FileInputStream("branch.dat");
            ObjectInputStream ois = new ObjectInputStream(fis);
            //BranchList = (ArrayList<Branch>)ois.readObject();
            Branch obj = null;

            while ((obj = (Branch) ois.readObject()) != null) {
                System.out.println("Name:" + obj.getbranch_name() + ", Address:"
                        + obj.getbranch_address());
            }
            ois.close();
        } catch (IOException ex) {
            System.out.println(" IOE ERROR");
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            System.out.println("class ERROR");
            ex.printStackTrace();
        }
    }
});

1 Ответ

0 голосов
/ 28 мая 2020

Используйте это как класс ветвления:

        import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;

    class Branch implements Serializable{

        private String branch_name;
        private String branch_address;

        public Branch(String Bname, String Baddress) {
            this.branch_name = Bname;
            this.branch_address = Baddress;
        }
            public String getbranch_name(){
                return branch_name;
            }

            public String getbranch_address(){
                return branch_address;
            }

            public void show_branch_details() {
                System.out.println( " The branch name is : " + getbranch_name()
                        + " branch address :"+ getbranch_address());
            }

        }

    public class Test {

        public static void main(String[] args) throws IOException, ClassNotFoundException {

            Branch A= new Branch("TestA","Add_A");
            Branch B= new Branch("TestB","Add_B");

            ArrayList<Branch> BranchList = new ArrayList<>();
            BranchList.add(A);
            BranchList.add(B);

            FileOutputStream fos = new FileOutputStream("branch.dat");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(BranchList);
            oos.flush();
            oos.close();

            ArrayList<Branch> OutputBranchList = new ArrayList<>();
            FileInputStream fis = new FileInputStream("branch.dat");
            ObjectInputStream ois = new ObjectInputStream(fis);
            OutputBranchList = (ArrayList) ois.readObject();

            for(Branch branch : OutputBranchList) {
                System.out.println(branch.getbranch_name()+" "+ branch.getbranch_address());
            }
            ois.close();
        }
    }
...