Java类未实现序列化,能不能保存到本地

  • 首先看是不是有必要序列化
    没有序列化是有原因的,有些对象并不能被序列化。比如我们用一个对象来关联一个进程,实现对操作系统进程操作的包装。这个对象包含进程id这样的字段,以及诸如复制进程、停止进程这样的方法。那么这样的对象就不能序列化。
    因为序列化没有意义。你将这个对象的存储全部dump下来,重新开机,这个进程id还有意义么?
    同样的场景还发生在那些GUI类型上面、网络通讯的类型上面,它们并不是纯粹的Java对象。
    当然,你可以强行去系列化这样的对象,反射遍历字段,然后保存。反之类似。当然我说了,如果一个类型不支持序列化,肯定有深层次的原因,简单的对属性的保存和恢复得到的未必是可用的。
  • 有没有实现方式
    有人说用:XMLEncoder/XMLDecoder(未实验)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java序列化是指将Java对象转换为字节序列的过程,以便在网络上传输或保存到本地文件系统中。序列化后的字节序列可以在需要时进行反序列化,重新构造出与原始Java对象相同的对象。 要实现Java序列化,需要满足以下要求: 1. 必须实现 java.io.Serializable 接口。 2. 所有非瞬态(non-transient)实例变量也必须是可序列化的,否则需要使用 transient 关键字进行标记。 3. 序列化时需要使用 ObjectOutputStream 对象的 writeObject() 方法。 4. 反序列化时需要使用 ObjectInputStream 对象的 readObject() 方法。 下面是一个简单的Java序列化示例: ```java import java.io.*; public class SerializationExample implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; public SerializationExample(String name, int age) { this.name = name; this.age = age; } public static void main(String[] args) { SerializationExample obj = new SerializationExample("Alice", 25); try { FileOutputStream fos = new FileOutputStream("example.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(obj); oos.close(); fos.close(); System.out.println("Object has been serialized"); } catch(IOException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们定义了一个名为 SerializationExample 的,它实现java.io.Serializable 接口。我们创建了一个 SerializationExample 对象,将其序列化到本地文件系统中,然后输出一条消息以表示序列化操作已完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值