Пытаясь прочитать и записать ArrayList объектов в двоичный файл, но в итоге я получаю нулевые значения в выводе - PullRequest
0 голосов
/ 17 ноября 2018

Итак, у меня есть класс, называемый человеком, это просто родительский класс, от которого унаследуется мой другой класс "Admin", вот код, который будет полезен любой помощи, если она сделана в более простой форме с наличием класса Admin исоздание ArrayList в основном, а не в людях, кажется, работает нормально.

Класс Человек:

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;
    }

}

и вот класс администратора:

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 Ответ

0 голосов
/ 17 ноября 2018

Проблема возникает из-за того, что ваш родительский класс Human не сериализуем. Добавьте следующую строку

class Human implements Serializable {

Теперь вы получите результат, как и ожидалось.

...