【问题标题】:Java Object input stream readObject();Java 对象输入流 readObject();
【发布时间】:2016-04-05 14:43:39
【问题描述】:

我已将一个对象保存到数组列表并将文件另存为 .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();
}

【问题讨论】:

    标签: java serialization objectinputstream


    【解决方案1】:

    您定义了未序列化的静态成员 NameContact。删除 static 修饰符以使其工作。

    【讨论】:

    • 此外,还应遵循命名约定(namecontact)。
    【解决方案2】:

    只有non-transientnon-static 字段会被序列化。

    请参阅 Oracle 文档 pagejusfortechies 文章。

    改变

    public static String Name;
    public static String Contact;
    

    public String Name;
    public String Contact;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多