关键字: java serializablejava继承serislizable接口,简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。实现了Java对象的序列化。
在一下情况可以考虑使用序列化:
a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;示例:
- public class Order implements java.io.Serializable {
- private Long id;
- private String code;
- private String name;
- }
public class Order implements java.io.Serializable { private Long id; private String code; private String name; }将order对象写入流中:
- public InputStream getOrderInfoAsStream(Order order) {
- InputStream ret = null;
- ByteArrayOutputStream baos = null;
- ObjectOutputStream ous = null;
- if (order == null) {
- return ret;
- }
- try {
- baos = new ByteArrayOutputStream();
- ous = new ObjectOutputStream(baos);
- ous.writeObject(order);
- ret = FileUtil.getInputStreamFromBytes(baos.toByteArray());
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- if (baos != null) {
- baos.close();
- }
- if (ous != null) {
- ous.close();
- }
- } catch (Exception e) {
- }
- }
- return ret;
- }
public InputStream getOrderInfoAsStream(Order order) { InputStream ret = null; ByteArrayOutputStream baos = null; ObjectOutputStream ous = null; if (order == null) { return ret; } try { baos = new ByteArrayOutputStream(); ous = new ObjectOutputStream(baos); ous.writeObject(order); ret = FileUtil.getInputStreamFromBytes(baos.toByteArray()); } catch (Exception e) { e.printStackTrace(); } finally { try { if (baos != null) { baos.close(); } if (ous != null) { ous.close(); } } catch (Exception e) { } } return ret; }将对象从流中读出:
- public Order getOrder(InputStream is) {
- Order ret = null;
- ObjectInputStream ois = null;
- try {
- if (is != null) {
- ois = new ObjectInputStream(is);
- ret = (Order) ois.readObject();
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- if (ois != null) {
- ois.close();
- }
- } catch (Exception e) {
- }
- }
- return ret;
- }