首页 > 其他分享 >序列化工具类

序列化工具类

时间:2022-11-23 15:33:42浏览次数:38  
标签:object clazz static import 工具 序列化 public schema

 


import io.protostuff.LinkedBuffer;
import io.protostuff.ProtostuffIOUtil;
import io.protostuff.Schema;
import io.protostuff.runtime.RuntimeSchema;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SerializerUtil {
    private static final Logger LOGGER = LoggerFactory.getLogger(SerializerUtil.class);

    public SerializerUtil() {
    }

    public static <T> byte[] encode(T object, Class<T> clazz) {
        Schema<T> schema = RuntimeSchema.getSchema(clazz);
        LinkedBuffer buffer = LinkedBuffer.allocate();
        return ProtostuffIOUtil.toByteArray(object, schema, buffer);
    }

    public static <T> byte[] encode(T object) {
        Schema<T> schema = RuntimeSchema.getSchema(object.getClass());
        LinkedBuffer buffer = LinkedBuffer.allocate();
        return ProtostuffIOUtil.toByteArray(object, schema, buffer);
    }

    public static <T> T decode(byte[] bytes, Class<T> clazz) {
        Object object;
        try {
            object = clazz.newInstance();
        } catch (Exception var4) {
            LOGGER.error("Protostuff反序列化时创建实例失败,Class:" + clazz.getName(), var4);
            return null;
        }

        return decode(bytes, clazz, object);
    }

    public static <T> T decode(byte[] bytes, T object) {
        return decode(bytes, object.getClass(), object);
    }

    public static <T> T decode(byte[] bytes, Class<T> clazz, T object) {
        Schema<T> schema = RuntimeSchema.getSchema(clazz);
        ProtostuffIOUtil.mergeFrom(bytes, object, schema);
        return object;
    }
}

 

标签:object,clazz,static,import,工具,序列化,public,schema
From: https://www.cnblogs.com/tomcat9/p/16918481.html

相关文章

  • Android 进程之间复杂的数据类型传输为啥一定需要序列化
    Android进程之间复杂的数据类型传输为啥一定需要序列化Linux特性Android系统都是基于Linux系统实现的,而这里Linux运行的时候,都是有进程隔离机制的。Linux采用了虚拟内......
  • 常用的BI工具有哪些?口碑怎样?
    Tableau、Smartbi、奥威BI、帆软BI、永洪BI、润乾BI、观远BI……在那么多的BI工具中,真正可以算得上是有口皆碑,能够很好地适应中国市场,为中国企业提供高效、高质智能数据可视......
  • stress压力测试工具
    stress是Linux的一个压力测试工具,可以对CPU、Memory、IO、磁盘进行压力测试。一、软件包方式安装[root@centos7~]#yum-yinstallstress-ng[root@ubuntu1804~]#apt......
  • 实用工具(锐捷无线篇)-WIS
    大家好,我是小杜,前天学习睿易产品的云端相关登录方式,今天发现原来行业设备也有对应的云管理平台:WIS云网融合平台,这是要对所有产品做全方位覆盖,全面支持云管理的节奏啊!那就来......
  • 直播app源码,输入密码和用户名调用开发者工具
    直播app源码,输入密码和用户名调用开发者工具 <!DOCTYPEhtml><html><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <me......
  • 集合的工具类Collections
    Collections数组的工具Arrays,集合的工具类Collectionspublicstatic<T>booleanaddAll(Collection<?superT>c,T...elements)//向指定集合里面添加元素:priv......
  • 属性还是servlet参数,报表工具功能点控制方式探讨
        在皕杰报表工具规划的新版本中,拟将带有查询表单的报表是否根据缺省参数值自动查询的设置放到报表查询表单属性里去设置,原来版本中这个功能点是通过在url中后跟se......
  • 005. MyBatis介绍---02初始化工具类MyBatisUtils
    1.什么是SqlSessionFactory  2.src/main/java/com/imooc/mybatis/utils/MyBatisUtils.javapackagecom.imooc.mybatis.utils;importorg.apache.ibatis.io.Resou......
  • Java 用Lambda实现一个通用的制造者工具
    在我们日常开发中,虽然是用了lombok在实体类中已经帮我们省了get、set方法,但是在公司的项目中,还是经常会出现new一个对象然后一个个的给它set值的情况,太丑了,如下图List<St......
  • python打包工具distutils
    参考: http://www.cppcns.com/jiaoben/python/225742.htmlpython源码包安装:pythonsetup.pyinstalldistutilsdistutils是python标准库的一部分,这个库的目的是为开......