package com.snowcattle.game.common.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /** * * @author ZERO * */ public class CodecUtil { /** * 反序列化 * @param <T> * @param bytes * @return */ @SuppressWarnings("unchecked") public static <T> T decode(byte[] bytes){ if(bytes==null||bytes.length==0) return null; ObjectInputStream objIn = null; try { objIn = new ObjectInputStream(new ByteArrayInputStream(bytes)); Object object = objIn.readObject(); return (T) object; } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally{ if(objIn!=null){ try { objIn.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * 序列化 * @param <T> * @param object * @return */ public static <T> byte[] encode(T object){ if(object==null) return null; ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream objectOut = null; try { objectOut = new ObjectOutputStream(out); objectOut.writeObject(object); } catch (IOException e) { e.printStackTrace(); }finally{ if(out!=null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if(objectOut!=null){ try { objectOut.close(); } catch (IOException e) { e.printStackTrace(); } } } return out.toByteArray(); } }