數據流動之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>);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM