在Java(8)中序列化对象时遇到问题。我看到了很多例子,但没有一个对我有用。事实是,序列化时不会将对象及其完整数据序列化。当我尝试反序列化时,它将所有变量读取为null。我用Employee类来做。 Serialize.java的代码:

public class Serialize {
private static ArrayList<Employee> emp = new ArrayList<Employee>();
public static void main(String[] args){
    try{

            emp.add(new Employee("Areg Hovhannisyan",5));
            emp.add(new Employee("Tigran Hakobyan",15));
            emp.add(new Employee("Shivanshu Ojha",11));
            FileOutputStream fos = new FileOutputStream("emps.emp");
            ObjectOutputStream out = new ObjectOutputStream(fos);
            out.writeObject(emp);

            out.close();
            fos.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
}
}


Employee.java:

import java.io.Serializable;
public class Employee implements Serializable {
private static int age;
private static String name;

public static int getAge() {
    return age;
}
public static void setAge(int age) {
    Employee.age = age;
}
public static String getName() {
    return name;
}
public static void setName(String name) {
    Employee.name = name;
}


public Employee(String name,int i) {
    this.name = name;
    this.age = i;
}
@Override
public String toString() {
    return "Name : " + getName() + ", Age : " + getAge();
}

}


请举例说明如何进行反序列化,并提供解释,因为我也想了解它的工作原理。

最佳答案

这是因为您在类中的字段是静态的。静态变量是隐式瞬态的,我们无法序列化瞬态字段。

10-07 19:59
查看更多