在Java中,枚举类默认是实现了Serializable接口的,因此可以直接进行序列化操作。在进行序列化时,可以使用ObjectOutputStream来将枚举对象写入输出流,然后使用ObjectInputStream来读取枚举对象。
下面是一个示例代码:
import java.io.*;
enum Color {
RED, GREEN, BLUE
}
public class EnumSerialization {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Color color = Color.RED;
// 序列化
FileOutputStream fos = new FileOutputStream("color.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(color);
oos.close();
// 反序列化
FileInputStream fis = new FileInputStream("color.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
Color deserializedColor = (Color) ois.readObject();
ois.close();
System.out.println("Original color: " + color);
System.out.println("Deserialized color: " + deserializedColor);
}
}
在上面的示例中,首先定义了一个枚举类Color,然后创建了一个Color.RED的枚举对象进行序列化和反序列化操作。在输出中可以看到序列化前后的枚举对象是相同的。