1.序列化的对象
/**
* 需要序列化的对象 实体类 需要继承Serializable
*
* @author lm 说明:1.序列化不会保存静态变量,因为静态变量是对象的状态 2.Transient 不会被序列化 因为Transient 是临时变量
*
*/
public class Model implements Serializable {
private static final long serialVersionUID = 1L;
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.序列化 属于test类
/**
*
* @param m
* 要序列化的对象
* @return byte[] 序列化后的字节数组
*/
public byte[] tobyte(Model m) {
// 设置属性
m.setAge(10);
m.setName("小明");
// 输出流ByteArrayOutputStream是跟字节交互的
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 输出流 ObjectOutputStream 是跟对象交互的 可以吧对象转换成ByteArrayOutputStream输出流
ObjectOutputStream oos;
byte[] bytes = null;
try {
oos = new ObjectOutputStream(baos);
oos.writeObject(m);
bytes = baos.toByteArray();
oos.close();
System.out.println("序列化的数据 是字节数组:" + bytes);
} catch (Exception e) {
e.printStackTrace();
}
return bytes;
}
3.返序列化 属于test类
/**
*
* 把序列化的字节数组 返序列化成对象
*
* @param byte[] 序列化后的字节数组
*
* @return Model
*/
public Model frombyte(byte[] bytes) {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois;
Model retModel = null;
try {
ois = new ObjectInputStream(bais);
bais.close();
retModel = (Model) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return retModel;
}
4.测试
public static void main(String[] args) {
Model model = new Model();
model.setAge(18);
model.setName("那个她");
test test=new test();
byte [] rbytes=test.tobyte(model);
System.out.println("序列化后的字节数组:"+rbytes);
Model m2= test.frombyte(rbytes);
System.out.println("反序列化后对象:"+m2.getAge()+"--"+m2.getName());
}