java Serializable 序列化 反序列化
来源:互联网 发布:tonica和声软件怎样 编辑:程序博客网 时间:2024/05/01 05:14
java 序列化和 反序列化例子:
//序列化对象类 必须实现Serializable 接口
public class Person implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String id;
private String age;
Person(){}
Person(String name,String id,String age){
this.name = name;
this.id = id;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
//序列化类
public class TestIo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
File filepath = new File("D://person.java");
FileOutputStream fos = new FileOutputStream(filepath);
FileInputStream fis = new FileInputStream(filepath);
ObjectOutputStream oop = new ObjectOutputStream(fos);
ObjectInputStream ins = new ObjectInputStream(fis);
Person per = new Person("张三","001","23");
Person per1 = new Person("张三1","002","24");
Person per2 = new Person("张三2","003","25");
Person per3 = new Person("张三3","004","26");
Person per4 = new Person("张三4","005","27");
Person per5 = new Person("张三5","006","28");
List<Person> personList = new ArrayList<Person>();
List<Person> personList1 = null;
personList.add(per);
personList.add(per1);
personList.add(per2);
personList.add(per3);
personList.add(per4);
personList.add(per5);
//序列化
oop.writeObject(personList);
//反序列化
personList1 = (List<Person>) ins.readObject();
fos.close();
oop.close();
fis.close();
ins.close();
}
}
注意节点:
1.被序列化类必须实现 Serializable接口
2.由于序列化破坏了java的封装特性,所以在想要把指定的某个敏感字段不被序列化时可以使用 关键字:transient
如:private transient String id; 这里的id 字段将不会序列化。
3.如果被序列化类里包含引用类型的字段那么 这个引用类型的类 也必须是实现了 Serializable 接口的 否则将会报错 NotSerializableException .
4.java 序列化对象的时候,如果多次序列化了同一个对象,则java序列化机制的实际操作是:仅仅在第一次的时候将对象转化为字节序列到本地(或者指定方向输出)。所以在对象序列化之后再去改变对象中的属性,然后再次序列化此时改变的内容不会被序列化到本地。
5.实例化对象中方法和静态属性不会被序列化。
如果前面已经序列化了该对象 ,然后再次调用序列化方法时。此时程序只输出序列化的编码。并不会真正的将 对象再次序列化。
- java Serializable 序列化 反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java Serializable和Externalizable序列化反序列化详解
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java 序列化 反序列化(Serializable)详解
- Java序列化与反序列化(Serializable)
- java序列化(Serializable)的作用和反序列化
- java 序列化 Serializable 与 反序列化 总结
- Java对象的序列化和反序列化Serializable
- JAVA序列化与反序列化基础 Serializable
- java Serializable和Externalizable序列化反序列化详解
- 第一节 搭建java开发环境
- thinking in java 第四天
- java类加载器ClassLoader .
- [MySQL] InnoDB三大特性之 - 插入缓冲
- PCF8591 A/D转换实验-测量电位器的电平
- java Serializable 序列化 反序列化
- PHP缓存技术的多种方法小结
- 交换机的连接方式
- 一个程序员多年的收藏
- Unable to handle kernel paging request at virtual address
- form表单提交如何验证?
- 选择终止程序,人机交互常用do-while结构
- android面试题(深度解析)
- Shell—sed命令