zoukankan      html  css  js  c++  java
  • 数据流动之Java对象存入redis时完成字符串和bean的相互转换

    简介:使用两个函数完成任意的Java对象和字符串之间的相互转换

      对常见的Java类型进行常规转型,对其余的Java类型借助JSON来完成转换。下面代码来自RedisService.java。

    1.字符串转为指定的Java类型

     1 /**
     2      * 将字符串转化为指定的Java类型对象
     3      */
     4     public static <T>T strToBean(String str,Class<T> clazz) {    //将字符串转变为指定类型的Java对象
     5         if (str == null||clazz==null||str.length()==0) {
     6             return null;
     7         }
     8         if (clazz == int.class || clazz==Integer.class) {
     9             return (T) Integer.valueOf(str);
    10         }else if (clazz==long.class||clazz==Long.class){
    11             return (T) Long.valueOf(str);
    12         }else if (clazz==float.class||clazz==Float.class) {
    13             return (T) Float.valueOf(str);
    14         }else if (clazz==String.class){
    15             return (T) str;
    16         }else return (T) JSON.toJavaObject(JSON.parseObject(str),clazz);
    17         //JSON.parseObject(str):将字符串转化为一个对象
    18         //JSON.toJavaObject(JSON,class<T>):将一个JSON对象转化为一个clazz类型的Java对象。
    19     }

    Class<T>:传入某个Java类型的class。

    return后面的(T)和<T>T中的后一个T保持相同。

    返回类型的<T>T:表示返回类型T和<T>保持相同。

    <T>T:中的<T>和参数Class<T>胸相同。

    所以:Class<T>----><T>----->T------>return (T)。

    2.将某个Java类型的对象或基本数据类型转化为String字符串

     1 /*
     2     *将某个类型的Java对象转换为string字符串
     3     */
     4 
     5     public static <T> String beanToStr(T value) {
     6         if (value == null) {
     7             return null;
     8         }
     9                                                                                                                         //基本数据类型使用常规方式转换
    10         Class<?> clazz = value.getClass();
    11         if (clazz == int.class || clazz==Integer.class) {
    12             return value+"";
    13         }else if (clazz==long.class||clazz==Long.class){
    14             return value+"";
    15         }else if (clazz==float.class||clazz==Float.class) {
    16             return value + "";
    17         }else if (clazz==String.class){
    18             return (String) value;
    19         }else return JSON.toJSONString(value);                                                                          //非基本数据类型使用JSON.toJSONString()
    20 
    21     }

    学习:

    1.Class和取得Class

      面向对象的思想为万物皆是对象,对象以类为模板来创建,而创建对象的类又是谁的对象呢?  是java.lang.Class的对象,每个类都是Class的对象。

      对象获取类的方法:对象.getClass()

      类获取类对象的方法:类名.class

      java.lang.Class.forName(包名.类名A):动态加载类名A,即当程序运行时将类名A加载到JVM(得到类名A的类对象)。

    2.Class<T>是什么?能干什么?

      每个Java类或基本数据类型在编译后都会产生一个.class字节码文件,在该文件内部包含了对应Java类或基本数据类型的相关信息,Class<T>代表所有.class文件对象的类,并

      提供了很多的操作方法。

      能创建一个对象:Class c1 = Class1.class ;    Class1 c11 = c1.newInstance()。当Class1中包含有参构造方法时,会出错。

    3.JSON的使用

     引入依赖

    1 <dependency>
    2     <groupId>com.alibaba</groupId>
    3     <artifactId>fastjson</artifactId>
    4     <version>x.x.x</version>
    5 </dependency>
    import com.alibaba.fastjson.JSON;
    
    
    //将一个Java对象转化为字符串
    JSON.toJSONString(Object o);
    //将一个字符串转化为一个JAVA对象
    JSONObject  jo = JSON.parseObject(String s)
    JSON.toJavaObject(jo,Class<T>);
  • 相关阅读:
    db2构建临时结果集
    db2 in out inout
    杂文Python
    db2记录去重
    oop设计模式抽象总结
    Linux 查看发行版版本信息和内核版本
    第二节课:功能测试需求分析方法
    mybatis or的用法
    java中&& 的运算优先级高于||
    下载根目录下的pdf文件, 浏览器下载
  • 原文地址:https://www.cnblogs.com/deijiawoyu/p/12673603.html
Copyright © 2011-2022 走看看