有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java试图将对象的ArrayList读写到二进制文件中,但最终在输出中得到空值

因此,我有一个名为Human的类,它只是我的另一个类“Admin”将从中继承的父类,下面是代码,任何帮助都将不胜感激 当以一种更简单的形式完成时,即在类Admin中创建一个数组列表,并在main中创建ArrayList,而不是在human中创建时,它似乎工作得很好

类人:

package binaryfiles;

import java.util.ArrayList;


public class Human {


    public ArrayList <Admin> myArrayList = new ArrayList <Admin> ();

    private int Id;
    private String Fullname;
    private String Password;

    public Human(){


    }

    public Human(int Id,String Fullname,String Password){

        this.Id = Id;
        this.Fullname = Fullname;
        this.Password = Password;

    }

   public boolean setId(int Id){

        if (Id > 0){

            this.Id = Id;
        }
        return true;
    }

    public boolean setFullname(String Fullname){

        if(Fullname != null){

            this.Fullname = Fullname;

        }
        return true;
    }

    public boolean setPassword(String Password){

        if(Password != null){

            this.Password = Password;
        }
        return true;
    }

    public int getId(){

        return Id;
    }

    public String getFullname(){

        return Fullname;
    }

    public String getPassword(){

        return Password;
    }

}

下面是Admin类:

public class Admin extends Human implements Serializable {


    public void Binaryfile (int Id, String Fullname,String Password) throws FileNotFoundException, IOException, ClassNotFoundException{

        Admin myAdmin = new Admin();
        myAdmin.setId(Id);
        myAdmin.setFullname(Fullname);
        myAdmin.setPassword(Password);
        myArrayList.add(0, myAdmin);

        ObjectOutputStream Bin = new ObjectOutputStream(new FileOutputStream("D://testingfash5.bin"));
        Bin.writeObject(myArrayList);
        Bin.close();

        ObjectInputStream Bout = new ObjectInputStream (new FileInputStream("D://testingfash5.bin"));
        ArrayList <Admin>  myArrayList2 = (ArrayList <Admin>)Bout.readObject();
        System.out.println(myArrayList2.get(0).getId() + "-" +myArrayList2.get(0).getFullname()+ "-" + myArrayList2.get(0).getPassword());


    }


}

最后是我的主要观点:

public class BinaryFiles {

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

        Scanner Input = new Scanner(System.in);
        int age;
        int id;
        String fullname;

     Admin myAdmin = new Admin();
     age = Input.nextInt();
     fullname = Input.next();
     id = Input.nextInt();           
     myAdmin.Binaryfile(id, fullname, fullname);


   }
}

输出:“0-空-空”


共 (1) 个答案

  1. # 1 楼答案

    出现此问题是因为父类Human不可序列化。添加以下行

    class Human implements Serializable {
    

    现在您将获得预期的输出