Java Enum类的序列化问题

   2024-10-06 3630
核心提示:在Java中,Enum类默认是可序列化的,即可以将Enum对象写入到输出流中,或从输入流中读取Enum对象。当对Enum对象进行序列化时,会

在Java中,Enum类默认是可序列化的,即可以将Enum对象写入到输出流中,或从输入流中读取Enum对象。当对Enum对象进行序列化时,会自动保存Enum对象的名称而不是保存其值。在进行反序列化时,会根据保存的名称来获取对应的Enum对象。

以下是一个简单的示例:

import java.io.*;enum Color {    RED, GREEN, BLUE;}public class Main {    public static void main(String[] args) {        // 序列化Enum对象        try {            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("enum.ser"));            oos.writeObject(Color.RED);            oos.close();        } catch (IOException e) {            e.printStackTrace();        }        // 反序列化Enum对象        try {            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("enum.ser"));            Color color = (Color) ois.readObject();            System.out.println("Deserialized Enum: " + color);            ois.close();        } catch (IOException | ClassNotFoundException e) {            e.printStackTrace();        }    }}

在这个示例中,我们定义了一个Color枚举,然后将Color.RED对象进行序列化,并进行反序列化操作。在反序列化时,输出的结果应该是"Deserialized Enum: RED"。

需要注意的是,Enum类的序列化是基于Enum名称而不是值的,因此在反序列化时需要保证Enum对象的名称是唯一的,否则会出现错误。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号