java序列化与反序列化(2)------jdk原生序列化机制Serializable

使用jdk原生的序列化机制,我们要把需要序列化的类实现Serializable接口或者Externalizable(关于Externalizable这个接口稍后我会讲到),我们这里先说Serializable,Serializable这是一个标记接口没有声明任何的方法。

public abstract interface Serializable {
}

(1)序列化的基本操作

下面我们构造一个Book类并实现Serializable接口,代码如下:

/**
 * 序列化类的模型
 * @author yujie.wang
 * @since 10/03/2017
 */
public class Book implements Serializable{	
	//序列化的版本号
	private static final long serialVersionUID = 6165984730624879548L;

	private String name;
	 
	private double price;
	
	private boolean status;
	
	private int rent_days;
	
	private List<String> list;
	
	// transient关键字修饰的域不被序列化
	private transient int rentTimes;
	
	// 静态域属于类,不是对象的状态
	private static String note = "this is a nice book";
	
	
	public Book(String name, double price, boolean status, int rent_days, List<String> list,
			int rentTimes){
		this.name = name;
		this.price = price;
		this.status = status;
		this.rent_days = rent_days;
		this.list = list;
		this.rentTimes = rentTimes;
	
	}

	public int getRentTimes() {
		return rentTimes;
	}

	public void setRentTimes(int rentTimes) {
		this.rentTimes = rentTimes;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public boolean isStatus() {
		return status;
	}

	public void setStatus(boolean status) {
		this.status = status;
	}

	public int getRent_days() {
		return rent_days;
	}

	public void setRent_days(int rent_days) {
		this.rent_days = rent_days;
	}

	public List<String> getList() {
		return list;
	}

	public void setList(List<String> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		return "Book [name=" + name + ", price=" + price + ", status=" + status
				+ ", rent_days=" + rent_days + ", list=" + list
				+ ", rentTimes=" + rentTimes + "]";
	}

}

我们之前说过序列化是保存对象的状态,所以类中的静态变量属于类而不属于对象的状态,所以静态变量是不被序列化的。如果我们有一些不想被序列化的属性,比如程序打开的文件句柄之类的,那么我们可以在这样的域上用transient关键字进行声明。

序列化和反序列化的测试代码如下所示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值