日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java List Object[]轉換成List T的實例

瀏覽:111日期:2022-08-24 16:09:50

一)背景

主要是為了實現數據之間的轉換,方便數據展示。

使用場景:當數據可能是List<Object[]>類型,可能會需要轉換成具體的List<Class>格式。

二)List<Object[]>轉換成List<T>

功能:傳入List<Object[]>數據和需要轉換的Class對象,返回一個List<Class>數據集合

實現方式:Java反射方式,使用的是構造器的方式

缺點:實體類中必須有無參數構造器,有參數構造器,且構造器參數的順序和數據的順序必須一致。如果數據格式有變化,需要重新編寫一個實體類的構造器

實現源碼:

package com.oysept.utils; import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.List; /** * List<Object[]>轉換成一個List<T> * @author ouyangjun */public class ObjectToBeanUtils { /** * 把List<Object[]>轉換成List<T> */ public static <T> List<T> objectToBean(List<Object[]> objList, Class<T> clz) throws Exception{ if (objList==null || objList.size()==0) { return null; } Class<?>[] cz = null; Constructor<?>[] cons = clz.getConstructors(); for (Constructor<?> ct : cons) { Class<?>[] clazz = ct.getParameterTypes(); if (objList.get(0).length == clazz.length) { cz = clazz; break; } } List<T> list = new ArrayList<T>(); for (Object[] obj : objList) { Constructor<T> cr = clz.getConstructor(cz); list.add(cr.newInstance(obj)); } return list; }}

三)實體類PhoneVO.java

package com.oysept.bean; import java.io.Serializable;import java.math.BigDecimal; public class PhoneEntity implements Serializable { private static final long serialVersionUID = 1L; public PhoneEntity() {} /** * 構造器 * 注意: 實體類中必須有無參數構造器,有參數構造器,且構造器參數的順序和數據的順序必須一致。如果數據格式有變化,需要重新編寫一個實體類的構造器 */ public PhoneEntity(String plate, BigDecimal number, double memory, double size) { super(); this.plate = plate; this.number = String.valueOf(number); this.memory = String.valueOf(memory); this.size = String.valueOf(size); } private String plate; private String number; private String memory; private String size; public String getPlate() { return plate; } public void setPlate(String plate) { this.plate = plate; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getMemory() { return memory; } public void setMemory(String memory) { this.memory = memory; } public String getSize() { return size; } public void setSize(String size) { this.size = size;}}

四)數據轉換測試類

package com.oysept.test; import java.math.BigDecimal;import java.util.ArrayList;import java.util.List; import com.oysept.bean.PhoneEntity;import com.oysept.utils.ObjectToBeanUtils; /** * 測試類 * @author ouyangjun */public class ObjectToBeanTest { public static void main(String[] args) throws Exception { // 初始化數據 Object[] obj = new Object[4]; obj[0] = 'hw'; obj[1] = BigDecimal.valueOf(13699999999L); obj[2] = 4.7; obj[3] = 5.0; Object[] obj1 = new Object[4]; obj1[0] = 'vivo'; obj1[1] = BigDecimal.valueOf(13611111111L); obj1[2] = 4.8; obj1[3] = 5.7; List<Object[]> objList = new ArrayList<Object[]>(); objList.add(obj); objList.add(obj1); // 工具類 List<PhoneEntity> list = ObjectToBeanUtils.objectToBean(objList, PhoneEntity.class); for (PhoneEntity phone : list) { System.out.println(phone.getPlate() + 't' + phone.getNumber() + 't' + phone.getMemory() + 't' + phone.getSize()); } }}

數據轉換打印效果圖:

Java List Object[]轉換成List T的實例

補充知識:List、List<Object>、List<?>的區別

通過一個例子來比較這幾種寫法的區別

Java List Object[]轉換成List T的實例

public class ListWithoutGeneric { public static void main(String[] args) { // 第一段:不使用泛型的方式 List a1 = new ArrayList(); a1.add(new Object()); a1.add(new Integer(1)); a1.add(new String('a1')); // 第二段:把a1賦值給List<Object>類型的a2,看似a2與a1沒有區別 List<Object> a2 = a1; a2.add(new Object()); a2.add(new Integer(2)); a2.add(new String('a2')); // 但是如果嘗試把一個帶有其它類型泛型的b2賦值給a2,則會編譯報錯 List<String> b2 = new ArrayList<>(); // 編譯報錯,這也是List與List<Object>的區別 a2 = b2; // 第三段:把a1賦值給List<Integer>類型的a3,賦值過程沒有編譯報錯,主要為了向前兼容(泛型jdk1.5之后才出現) List<Integer> a3 = a1; a3.add(new Integer(3)); // java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.Integer Integer integer = a3.get(0); // 編譯報錯,不允許add非Integer類型 a3.add(new Object()); a3.add(new String('a3')); // 第四段:把a1賦值給List<?>類型的a4 List<?> a4 = a1; a4.remove(0); a4.clear(); a4.add(null); // 編譯出錯,不允許add非null的數據 a4.add(new Object()); }}

1、第一段:定義了一個沒使用泛型的List a1,向a1中添加不同類型的元素,所有功能都可以正常使用,但使用時會有類型強制轉換異常的風險。

2、第二段:把a1賦值給List<Object>類型的a2,再往a2添加不同類型元素,不會編譯報錯,看似a2與a1沒有區別,但是如果嘗試把一個帶有其它類型泛型(List<String>)的b2賦值給a2,則會編譯報錯,除非讓泛型保持一致。

這也是List與List<Object>的區別:泛型之間只有同類型才能相互賦值。

3、第三段:把a1賦值給List<Integer>類型的a3,賦值過程沒有編譯報錯,主要為了向前兼容(泛型jdk1.5之后才出現),但如果直接用Integer類型取值,會報類型轉換異常。因為a3有了泛型約束,再添加其它類型元素,則會編譯報錯。

4、List<?>是通配符集合,一般作為參數來接收外部的集合,或者返回一個不知道具體元素類型的集合。它可以被任何類型的集合引用賦值,也可以刪除元素。但是因為類型的不確定,所有不能添加非null元素(null屬于任何類型)。

以上內容根據《碼出高效Java開發手冊》學習整理。希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一区二区三区四区日韩| 久久精品在线| 欧美日韩中出| 国产一区调教| 免费不卡中文字幕在线| 亚洲18在线| 国产精品一二| 欧美+日本+国产+在线a∨观看| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品hd| 久久国产电影| 天海翼精品一区二区三区| 国产一区二区三区免费在线| 五月天久久网站| 国产欧美自拍| 亚洲大片在线| 国产精品mm| 亚洲欧美视频| 国产网站在线| 日韩在线视频一区二区三区| 福利视频一区| 蜜臀a∨国产成人精品| 国产一区二区三区亚洲综合| 石原莉奈一区二区三区在线观看 | 国产精品99一区二区三区| 国产精品毛片在线| 久久久久久色| 国产精品99一区二区| 日韩av不卡在线观看| 99久久视频| 国产欧美88| 中文亚洲欧美| 日本不卡免费高清视频在线| 蜜桃久久av一区| 午夜av不卡| 日韩av午夜在线观看| 婷婷亚洲五月色综合| 国产欧美一区二区三区米奇 | 在线亚洲观看| 国产成人精品一区二区免费看京| 免费黄网站欧美| 日韩av首页| 国产欧美精品| 一区二区国产在线| 婷婷精品视频| 国产一区二区三区黄网站| 天堂久久av| 国产综合亚洲精品一区二| 欧美激情在线精品一区二区三区| 美女久久一区| 欧美午夜精彩| 精品免费av一区二区三区| 日韩欧美2区| 日韩视频一区| 久久人人精品| 国精品产品一区| 国产欧美日韩视频在线| 蜜桃av一区二区在线观看| 国产在线日韩| 国产在线看片免费视频在线观看| 国产伦理久久久久久妇女| 热久久免费视频| 久久一区二区中文字幕| 欧美精品国产| 日韩精品1区2区3区| 亚洲欧美久久| 午夜久久久久| 国产91久久精品一区二区| 国产成人精品一区二区三区视频| 国产麻豆一区| 97久久超碰| 美日韩精品视频| 亚洲精品中文字幕乱码| 久久久亚洲一区| 日韩精品一区二区三区免费观影| 日韩综合一区| 福利精品在线| 精品国产亚洲一区二区三区大结局| 青青草国产成人99久久| 天堂俺去俺来也www久久婷婷| 久久亚洲风情| 午夜在线播放视频欧美| 国产精品毛片在线看| 精品在线91| av一区二区高清| 欧美综合另类| 激情久久久久久久| 亚洲特级毛片| 欧美日韩国产探花| 欧美精品一线| 免费视频一区二区| 丝袜美腿高跟呻吟高潮一区| 亚洲激情欧美| 99热精品在线观看| 宅男噜噜噜66国产日韩在线观看| aa国产精品| 日韩中文欧美在线| 亚洲免费成人av在线| 亚州精品视频| 欧美日韩一区二区高清| 国产精品高清一区二区| 九九99久久精品在免费线bt| 久久一区二区三区电影| 91tv亚洲精品香蕉国产一区| 国产精品一卡| 国产乱子精品一区二区在线观看| 日韩三区四区| 美女精品一区| 国产精品试看| 久久国产66| 亚洲一区网站| 在线综合视频| 亚洲欧美日韩一区在线观看| 伊人成人网在线看| 黄色亚洲大片免费在线观看| 久久精品99久久无色码中文字幕| 日韩在线综合| 日韩成人三级| 国产综合色区在线观看| 国产美女高潮在线观看| 中文字幕成在线观看| 日韩大片在线观看| 国产盗摄——sm在线视频| 免费在线观看一区| 国产精品tv| 精品九九久久| 日韩1区在线| 久久久国产精品一区二区中文| 日本少妇一区| 国产综合精品一区| 免费黄色成人| 蜜桃一区二区三区在线观看| 日韩欧美久久| 久久丁香四色| 国产理论在线| 欧美一区二区三区高清视频| 在线亚洲国产精品网站| 久久成人精品| 亚洲人妖在线| 国产日韩中文在线中文字幕 | 青青青免费在线视频| 欧美日韩尤物久久| 欧美特黄一区| 最新国产精品久久久| 亚州av一区| 欧美激情福利| 国产精品久久久久久久久久10秀| 国产va在线视频| 亚洲午夜91| 亚洲一区二区三区无吗| 日韩国产91| 久久精品国产99国产| 日韩中文字幕高清在线观看| 丁香六月综合| 美女91精品| 国产精品4hu.www| 嫩草伊人久久精品少妇av杨幂| 久久久久免费| 好吊一区二区三区| 日韩动漫一区| 国产精品xxxav免费视频| 天堂а√在线最新版中文在线| 免费精品国产的网站免费观看| 日韩在线卡一卡二| 国产免费av一区二区三区| 欧美xxxx中国| 老鸭窝毛片一区二区三区| 国产免费av一区二区三区| 捆绑调教日本一区二区三区| 亚洲成人精选| 国产欧美成人| 欧美日韩国产高清电影| 日韩激情综合| 欧美一区久久久| 亚洲综合日本| 久久永久免费| 欧美日韩免费观看一区=区三区| 亚洲一区二区小说| 成人在线免费观看91| 奶水喷射视频一区| 国产一区二区精品福利地址| 欧美日韩视频一区二区三区| 国产欧美午夜| 婷婷精品视频| 国产精品大片| 亚洲一区二区三区四区五区午夜 | 中文字幕一区二区三区四区久久| 欧美国产另类| 蜜桃一区二区三区在线观看| 亚洲男女自偷自拍| 91av一区| 99热精品在线| 久久精品在线| 欧美xxxx中国| 麻豆精品少妇| 7m精品国产导航在线| 性欧美精品高清| 尤物tv在线精品| 午夜精品亚洲| 青草久久视频|