java序列化(Serializable)

序列化指的是将程序里的东西从内存储存到硬盘里,以便保存和传输。
java的io也提供了序列化,被序列化的javabean只需实现这个接口:java.io.Serializable
什么是javabean呢?总的来说,就相当于一个仓库,里面的变量可以取出和设置,但是不能直接访问变量。因此,javabean要符合下列条件:
1.javabean需要给每一个变量提供public的getter和setter。
2.javabean里的变量应为private
3.如果javabean需要被序列化,那么应实现java.io.Serializable接口。
例如下列就是一个可被序列化javabean:

import java.io.Serializable;
class User implements Serializable{
	private String username, password;
	public User(){}
	public User(String username, password){
		this.username = username;
		this.password = password;
	}
	public void setUsername(String username){
		this.username = username;
	}
	public String getUsername(){
		return this.username;
	}
	public void setPassword(String password){
		this.password = password
	}
	public String getPassword(){
		return this.password;
	}
}

当然,很多人有疑问:java.io.Serializable是什么?为什么要实现它?现在让我们来看一看他的接口:
Serializable
是个空接口?我们不用计较。先来看一看怎样写入磁盘(序列化)和读磁盘(反序列化)。
想要序列化和反序列化,就要用到java.io,只不过不是写文本文件了,而是直接写入Object的二进制。具体方法还是看下边:
序列化工具这回,方法变成了readObject()writeObject()
如果没有实现这个接口的话,写的过程会直接报错,说你没有实现那个接口,不过那也就是一个标志性接口,实现就可以了。
还有,javabean需要一个serialVersionUID,在eclipse会提示你新建一个,这个serialVersionUID作用很大,因为它相当于记录着文件最后被编辑的一个东西,如果你不定义他的话,能用是能用,但是如果你对JavaBean有一点改动,反序列化的时候就会报错,因为JVM会认为编辑了一下,之前序列化后的就不兼容了。解决方法就是把serialVersionUID定义为1L。比如这样:
定义方法
这个工具怎么用呢?当然是直接新建它的对象,然后序列化或反序列化。反序列化的时候,需要强转成你创建的javabean。
即使是二进制,不过他的变量是英文的话就会直接存储(中文会乱码),用记事本打开还能看到,因此不要想着用序列化就可以保密了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值