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 楼答案
出现此问题是因为父类
Human
不可序列化。添加以下行现在您将获得预期的输出