在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();
}
}
请举例说明如何进行反序列化,并提供解释,因为我也想了解它的工作原理。
最佳答案
这是因为您在类中的字段是静态的。静态变量是隐式瞬态的,我们无法序列化瞬态字段。