java 序列化
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.Method; /** * 对象操作工具类, 继承org.apache.commons.lang3.ObjectUtils类 */ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils { /** * 注解到对象复制,只复制能匹配上的方法。 * @param annotation * @param object */ public static void annotationToObject(Object annotation, Object object){ if (annotation != null){ Class<?> annotationClass = annotation.getClass(); if (null == object) { return; } Class<?> objectClass = object.getClass(); for (Method m : objectClass.getMethods()){ if (StringUtils.startsWith(m.getName(), "set")){ try { String s = StringUtils.uncapitalize(StringUtils.substring(m.getName(), 3)); Object obj = annotationClass.getMethod(s).invoke(annotation); if (obj != null && !"".equals(obj.toString())){ m.invoke(object, obj); } } catch (Exception e) { // 忽略所有设置失败方法 } } } } } /** * 序列化对象 * @param object * @return */ public static byte[] serialize(Object object) { ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; try { if (object != null){ baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); return baos.toByteArray(); } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 反序列化对象 * @param bytes * @return */ public static Object unserialize(byte[] bytes) { ByteArrayInputStream bais = null; try { if (bytes != null && bytes.length > 0){ bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bais); return ois.readObject(); } } catch (Exception e) { e.printStackTrace(); } return null; } public static void main (String args[]){ String say="这是一个强者的世界"; CommodityImg commodityImg=new CommodityImg(); commodityImg.setId("12300"); commodityImg.setSerialNumber(1); commodityImg.setType(12); commodityImg.setImg("sfddsfds"); System.out.println("序列化数据:"+ObjectUtils.serialize(say)); System.out.println("反序列化数据:"+ObjectUtils.unserialize(ObjectUtils.serialize(say))); System.out.println("序列化对象:"+ObjectUtils.serialize(commodityImg)); System.out.println("反序列化对象:"+ObjectUtils.unserialize(ObjectUtils.serialize(commodityImg))); CommodityImg unserialize = (CommodityImg) ObjectUtils.unserialize(ObjectUtils.serialize(commodityImg)); System.out.println("对象的Id: "+unserialize.getId()); } }
注意 : public class CommodityImg implements Serializable 实体对象要实现Serializable 接口
否则对象实例化会报
java.io.NotSerializableException: com.hwj.pjname.models.entity.CommodityImg
java.io.NotSerializableException: com.hwj.pjname.models.entity.CommodityImg
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at com.hwj.pjname.common.utils.ObjectUtils.serialize(ObjectUtils.java:61)
at com.hwj.pjname.common.utils.ObjectUtils.main(ObjectUtils.java:97)
java.io.NotSerializableException: com.hwj.pjname.models.entity.CommodityImg
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at com.hwj.pjname.common.utils.ObjectUtils.serialize(ObjectUtils.java:61)
at com.hwj.pjname.common.utils.ObjectUtils.main(ObjectUtils.java:98)

浙公网安备 33010602011771号