Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java对象输入流readObject();_Java_Serialization_Objectinputstream - Fatal编程技术网

Java对象输入流readObject();

Java对象输入流readObject();,java,serialization,objectinputstream,Java,Serialization,Objectinputstream,我已经将一个对象保存到数组列表中,并将文件保存为.dat,但是当我想读取该对象时,它只是显示null而不是值 班级 public class Person implements Serializable { public static String Name; public static String Contact; public Person(String Name, String Contact) { this.Name = Name; this.Contac

我已经将一个对象保存到数组列表中,并将文件保存为.dat,但是当我想读取该对象时,它只是显示null而不是值

班级

public class Person implements Serializable {
  public static String Name;
  public static String Contact;

  public Person(String Name, String Contact) {
    this.Name = Name;
    this.Contact = Contact;
  }

  public String getName() {
    return Name;
  }

  public String getContact() {
    return Contact;
  }
}
代码

FileInputStream fis;
try {
  fis = new FileInputStream("Person.dat");
  ObjectInputStream ois = new ObjectInputStream(fis);
  ArrayList<Person> per = (ArrayList<Person>) ois.readObject();
  ois.close();

  per.get(0);
  Person pe = per.get(0);
  System.out.println(pe.getName());
} catch (FileNotFoundException e1) {
  // TODO Auto-generated catch block
  e1.printStackTrace();
} catch (IOException e1) {
  // TODO Auto-generated catch block
  e1.printStackTrace();
} catch (ClassNotFoundException e1) {
  // TODO Auto-generated catch block
  e1.printStackTrace();
}
FileInputStream-fis;
试一试{
fis=新文件输入流(“Person.dat”);
ObjectInputStream ois=新ObjectInputStream(fis);
ArrayList per=(ArrayList)ois.readObject();
ois.close();
per.get(0);
人员pe=每获取(0);
System.out.println(pe.getName());
}捕获(FileNotFoundException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}捕获(IOE1异常){
//TODO自动生成的捕捉块
e1.printStackTrace();
}捕获(ClassNotFoundException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}

您定义了未序列化的静态成员
Name
Contact
。删除
静态
修饰符以使其生效。

只有
非瞬态
非静态
字段将被序列化

请参阅oracle文档和文章

改变

public static String Name;
public static String Contact;


此外,还应遵循命名约定(
name
contact
)。
public String Name;
public String Contact;