首页 > 代码库 > java开发中序列化与反序列化起到的作用
java开发中序列化与反序列化起到的作用
基本概念:
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
特别在网络传输中,它的作用显得尤为重要。我们可以把一个类实现序列化,然后在另一端通过反序列化可以得到该对象
例如:我们可以序列化一个对象,不过这个对象要实现序列化方法,并生成序列化号。
下面是一个扩展(对集合的序列化和反序列化):
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
特别在网络传输中,它的作用显得尤为重要。我们可以把一个类实现序列化,然后在另一端通过反序列化可以得到该对象
例如:我们可以序列化一个对象,不过这个对象要实现序列化方法,并生成序列化号。
这是对一个对象进行序列化和反序列化的过程:
public static byte[] serializeObj(Object object){ if (object == null) { throw new NullPointerException("Can't serialize null"); } byte[] rv = null; ByteArrayOutputStream bos = null; ObjectOutputStream os = null; try { bos = new ByteArrayOutputStream(); os = new ObjectOutputStream(bos); os.writeObject(object); os.writeObject(null); os.close(); bos.close(); rv = bos.toByteArray(); } catch (IOException e) { throw new IllegalArgumentException("Non-serializable object", e); } finally { try { if (os != null) { os.flush(); os.close(); } if (bos != null) { bos.flush(); bos.close(); } } catch (IOException e) { e.printStackTrace(); } } return rv; } @SuppressWarnings("unchecked") public static <T>T deserializeObj(byte[] in,Class<T> clazz) { ByteArrayInputStream bis = null; ObjectInputStream is = null; try { if (in != null) { bis = new ByteArrayInputStream(in); is = new ObjectInputStream(bis); while (true) { T o = (T) is.readObject(); if (o == null) { break; } else { return o; } } } } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { if (is != null) { is.close(); } if (bis != null) { bis.close(); } } catch (IOException e) { e.printStackTrace(); } } return null; }
下面是一个扩展(对集合的序列化和反序列化):
public static <T>byte[] serializeList(List<T> value ,Class<T> clazz) { if (value =http://www.mamicode.com/= null) {>java开发中序列化与反序列化起到的作用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。