java - 我无法在 Java 中序列化和反序列化对象

标签 java serialization deserialization

我在 Java(8) 中序列化对象时遇到问题。我看到了很多例子,但没有一个适合我。问题是,在序列化时,它不会序列化对象及其完整数据。当我尝试反序列化时,它将所有变量读取为空。我在 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();
        }
}
}

员工.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();
}

}

请给出一个示例来执行此操作,如何反序列化并请给出解释,因为我也想了解它是如何工作的。

最佳答案

这是因为类中的字段是静态的。静态是隐式 transient 的,我们无法序列化 transient 字段。

关于java - 我无法在 Java 中序列化和反序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122438/

相关文章:

java - this关键字的概念和同步

java - 反序列化时抛出 ClassNotFoundException

c# - BinaryFormatter 中可选字段的反序列化

Java 8 - 如何访问封装为 lambda 的对象和方法

java - 无法读取 EDI 文件

java - 如何找出序列化 Java 对象的 serialVersionUID?

windows - Windows 上的检查点(快照/恢复)库?

json - 将 JSON 字符串反序列化为 Haxe 中的类实例

c# - 使用 LINQ 反序列化 Json 的更优雅的方法?

out-of-memory - PermGen 的标志未按预期工作 : -XX:+CMSClassUnloadingEnabled and -XX:+CMSPermGenSweepingEnabled