数据流动之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>);

 

posted on 2020-04-10 15:04  hello,bdiskl  阅读(1207)  评论(0编辑  收藏  举报

导航