簡介:使用兩個函數完成任意的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>);