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

您的位置:首頁技術(shù)文章
文章詳情頁

Java List Object[]轉(zhuǎn)換成List T的實例

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

一)背景

主要是為了實現(xiàn)數(shù)據(jù)之間的轉(zhuǎn)換,方便數(shù)據(jù)展示。

使用場景:當(dāng)數(shù)據(jù)可能是List<Object[]>類型,可能會需要轉(zhuǎn)換成具體的List<Class>格式。

二)List<Object[]>轉(zhuǎn)換成List<T>

功能:傳入List<Object[]>數(shù)據(jù)和需要轉(zhuǎn)換的Class對象,返回一個List<Class>數(shù)據(jù)集合

實現(xiàn)方式:Java反射方式,使用的是構(gòu)造器的方式

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

實現(xiàn)源碼:

package com.oysept.utils; import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.List; /** * List<Object[]>轉(zhuǎn)換成一個List<T> * @author ouyangjun */public class ObjectToBeanUtils { /** * 把List<Object[]>轉(zhuǎn)換成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() {} /** * 構(gòu)造器 * 注意: 實體類中必須有無參數(shù)構(gòu)造器,有參數(shù)構(gòu)造器,且構(gòu)造器參數(shù)的順序和數(shù)據(jù)的順序必須一致。如果數(shù)據(jù)格式有變化,需要重新編寫一個實體類的構(gòu)造器 */ 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;}}

四)數(shù)據(jù)轉(zhuǎn)換測試類

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 { // 初始化數(shù)據(jù) 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()); } }}

數(shù)據(jù)轉(zhuǎn)換打印效果圖:

Java List Object[]轉(zhuǎn)換成List T的實例

補充知識:List、List<Object>、List<?>的區(qū)別

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

Java List Object[]轉(zhuǎn)換成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沒有區(qū)別 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>的區(qū)別 a2 = b2; // 第三段:把a1賦值給List<Integer>類型的a3,賦值過程沒有編譯報錯,主要為了向前兼容(泛型jdk1.5之后才出現(xiàn)) 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的數(shù)據(jù) a4.add(new Object()); }}

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

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

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

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

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

以上內(nèi)容根據(jù)《碼出高效Java開發(fā)手冊》學(xué)習(xí)整理。希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产欧美69| 免费福利视频一区二区三区| 亚洲色图综合| 国产精品普通话对白| 亚洲精品一级| 麻豆国产一区| 日韩av一级| 亚洲欧美日韩国产一区二区| 日韩精品导航| 三上亚洲一区二区| 国产精品7m凸凹视频分类| 亚洲欧洲av| 久久精品国产亚洲一区二区三区| 久久国产日韩| 亚洲综合福利| 精品一区二区三区中文字幕| 亚洲午夜一级| 久久精品av麻豆的观看方式| 久久免费影院| 国产一区白浆| 欧美黑人做爰爽爽爽| 欧美亚洲国产一区| 日韩二区三区四区| 日韩精品2区| 亚洲精品日韩久久| 中文字幕在线看片| 亚洲制服一区| www在线观看黄色| 亚洲在线久久| 久久精品91| 国产日韩欧美在线播放不卡| 久久国产亚洲| 国产剧情一区| 亚洲欧美一区在线| 久久精品超碰| 伊人成人网在线看| 久久99免费视频| jiujiure精品视频播放| 国产欧美高清| 黄色亚洲大片免费在线观看| 国产精品超碰| 99精品99| 中文字幕在线免费观看视频| 日韩精品视频一区二区三区| av一区在线| 国产欧美精品久久| 亚洲在线国产日韩欧美| 国产96在线亚洲| 少妇精品久久久一区二区| 久久青草久久| 福利在线一区| 国产日产一区| 蜜臀国产一区二区三区在线播放 | 国产91久久精品一区二区| 国产亚洲一区| 亚洲欧美日韩国产一区| 欧美日韩国产v| 久久av超碰| 日本在线不卡视频一二三区| 一区免费在线| 久久国产直播| 精品国产精品久久一区免费式 | 久久av在线| av一区在线| 国产一区二区色噜噜| 欧美日韩国产一区二区在线观看| 国产精品美女久久久| 麻豆一区二区在线| 亚洲乱码一区| 西西人体一区二区| 久久精品影视| 精品视频一区二区三区在线观看 | 欧美sss在线视频| 久久精品国产99国产| 18国产精品| 亚洲一二三区视频| 国产一区91| 狠狠色综合网| 日韩精品首页| av中文字幕在线观看第一页| 国产精品s色| 国产丝袜一区| 欧美亚洲一级| 欧美日韩国产一区二区在线观看| 日韩国产欧美在线播放| 深夜福利亚洲| 日产欧产美韩系列久久99| 蜜臀久久久久久久| 亚洲香蕉久久| 无码日韩精品一区二区免费| 亚洲网址在线观看| 亚洲人www| 三级久久三级久久久| 中文字幕亚洲在线观看| 亚洲一区二区三区无吗| 免费欧美日韩| 国产精品久久久久av蜜臀| 国产精品久久国产愉拍| 里番精品3d一二三区| 久久av资源| 国产专区精品| 国产日韩电影| 1000部精品久久久久久久久| 欧美aa国产视频| 黄色av一区| 亚洲欧美网站在线观看| 日本一区中文字幕| 欧美日韩亚洲一区二区三区在线| 欧美日韩亚洲一区| 国产精品三p一区二区| 国产伦理久久久久久妇女| 欧美日韩亚洲一区三区| 国产日产精品_国产精品毛片 | 成人在线视频区| 播放一区二区| 亚洲欧美日韩精品一区二区| 亚洲精品黄色| 欧美日本不卡高清| 国产精品不卡| 日韩中文在线电影| 伊人久久亚洲美女图片| 亚洲三级毛片| 国产精品久久久久久av公交车| 91偷拍一区二区三区精品| 久久九九电影| 亚洲伊人精品酒店| 国产精选久久| 成年男女免费视频网站不卡| 欧美日韩在线播放视频| 色天使综合视频| 999精品在线| 丝袜美腿高跟呻吟高潮一区| 日本国产欧美| 国模大尺度视频一区二区| 亚洲成av在线| 亚洲欧美日韩在线观看a三区| 日韩欧美中文字幕在线视频| 欧美激情91| 影视先锋久久| 亚洲精品在线a| 成人精品动漫一区二区三区| 久久亚洲国产| 日韩精品视频网站| 国内精品麻豆美女在线播放视频| 国产99久久| 日韩av午夜在线观看| 伊伊综合在线| 偷拍亚洲精品| 国产亚洲一区二区手机在线观看| 男人的天堂久久精品| 精品一区不卡| 怡红院精品视频在线观看极品| 国产欧美91| 亚洲精品一区二区在线看| 日韩精品一区二区三区中文在线 | 7777精品| 久久中文视频| 日韩av午夜在线观看| 韩国三级一区| 亚洲免费观看高清完整版在线观| 国产一区二区精品福利地址| 首页欧美精品中文字幕| 久久精品国产亚洲一区二区三区| 国产精品女主播一区二区三区| 久久99性xxx老妇胖精品| 国产亚洲一级| 亚洲黄色免费看| 日韩精彩视频在线观看| 久久91导航| 91嫩草精品| 不卡中文字幕| 精品一区av| 日韩精品久久理论片| 亚洲第一精品影视| 国产精品日本一区二区不卡视频| 亚洲欧美综合| 精品国产成人| 日韩激情av在线| 国产精品91一区二区三区| 麻豆国产欧美日韩综合精品二区| 鲁大师成人一区二区三区| 成人在线超碰| 日韩和欧美一区二区三区| 亚洲激情不卡| 色婷婷色综合| 日本不卡高清| 午夜在线一区| 久久婷婷一区| 国产91在线精品| 国产精品一区二区三区美女 | 麻豆成人在线观看| 日本一区二区三区中文字幕| re久久精品视频| 日韩毛片视频| 免费在线观看一区| 日韩欧美中文字幕一区二区三区| 欧美二区视频| 欧美精品高清| 国产在线视频欧美一区| 国产极品久久久久久久久波多结野|