java 实体类不被系列化_java序列化与反序列化

1. 定义

序列化:把对象转换为字节序列的过程称为对象的序列化。将JVM堆中对象以文件的方式保存下来。

反序列化:把字节序列恢复为对象的过程称为对象的反序列化。将文件加载进内存,恢复到序列化之前的状态。

2. 序列化场景

将内存中的对象状态保存到数据库或文件中;

对象在网络中以套接字进行传送;

通过RMI传送对象。

3. 实现序列化

ObjectOutputStream:对象输出流,writeObject(Object obj)可以指定obj对象序列化,并把得到的字节写到目标输出流。

ObjectInputStream:对象输入流,readObject()可以从源输入流读取字节序列,反序列化成对象,将其返回。

只有实现了Serializable,Externalizable接口的类的对象才能被序列化。

Serializable:接口中没有具体方法。会采用默认的序列化方式。

Externalizable:继承自Serializable,如果实现Externalizable接口需要类本身重写writeExternal(ObjectOutput out)和readExternal(ObjectInput in),完全由类本身控制序列化行为。

方法的重写较为简单,需要在方法小红分别out.writeXxx();和 in.readXxx()将字段写入和读出,注意写入的顺序和读出的顺序可以一致,因为对象装载是有序的。

3.1 实体类实现Serializable接口实现序列化

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/*** 用户类,实现Serializable接口*/

public class User implementsSerializable {privateString username;privateString password;private intage;publicUser() {

}public User(String username, String password, intage) {this.username =username;this.password =password;this.age =age;

}publicString getUsername() {returnusername;

}public voidsetUsername(String username) {this.username =username;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}public intgetAge

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值