java如何將Object數(shù)組轉(zhuǎn)換為指定類型數(shù)組
將Object數(shù)組轉(zhuǎn)換為指定類型數(shù)組
1.轉(zhuǎn)換函數(shù)
?? ?public static <T> T[] convertArray(Class<T> targetType, Object[] arrayObjects) { ? ? ? ? if (targetType == null) { ? ? ? ? ? ? return (T[]) arrayObjects; ? ? ? ? } ? ? ? ? if (arrayObjects == null) { ? ? ? ? ? ? return null; ? ? ? ? } ? ? ? ? T[] targetArray = (T[]) Array.newInstance(targetType, arrayObjects.length); ? ? ? ? try { ? ? ? ? ? ? System.arraycopy(arrayObjects, 0, targetArray, 0, arrayObjects.length); ? ? ? ? } catch (ArrayStoreException e) { ? ? ? ? ?? ?e.printStackTrace(); ? ? ? ? } ? ? ? ? return targetArray; ? ? }
2.測(cè)試main函數(shù)
?? ?public static void main(String []args){ ? ?? ??? ? GirlVo girlVo =new GirlVo(); ?? ??? ? girlVo.setGirlId("08123"); ?? ??? ? girlVo.setGirlName("張一"); ?? ??? ? GirlVo girlVo2 =new GirlVo(); ?? ??? ? girlVo2.setGirlId("08456"); ?? ??? ? girlVo2.setGirlName("張二"); ?? ??? ? Object[] arrayObjects2 = new Object[2]; ?? ??? ? arrayObjects2[0] = girlVo; ?? ??? ? arrayObjects2[1] = girlVo2; ?? ??? ?? ?? ??? ? GirlVo[] arrayObjects3 ; ?? ??? ? arrayObjects3 = convertArray(GirlVo.class,arrayObjects2); ?? ??? ? for(int i=0;i<arrayObjects3.length;i++){ ?? ??? ??? ? System.out.println("輸出GirlVo: "+arrayObjects3[i].toString()); ?? ??? ? } ?? ?}
3.實(shí)體類
public class GirlVo implements Serializable { ?? ?? ?? ?private static final long serialVersionUID = -8545755852948661858L; ?? ? ?? ?/**ID號(hào)*/ ?? ?String girlId; ?? ?/**姓名*/ ?? ?String girlName; ?? ?/**年齡*/ ?? ?long age; ?? ?/**身高*/ ?? ?double height; ?? ?/**罩杯*/ ?? ?String cupSize; ?? ?public String getGirlId() { ?? ??? ?return girlId; ?? ?} ?? ?public void setGirlId(String girlId) { ?? ??? ?this.girlId = girlId; ?? ?} ?? ?public String getGirlName() { ?? ??? ?return girlName; ?? ?} ?? ?public void setGirlName(String girlName) { ?? ??? ?this.girlName = girlName; ?? ?} ?? ?public long getAge() { ?? ??? ?return age; ?? ?} ?? ?public void setAge(long age) { ?? ??? ?this.age = age; ?? ?} ?? ?public double getHeight() { ?? ??? ?return height; ?? ?} ?? ?public void setHeight(double height) { ?? ??? ?this.height = height; ?? ?} ?? ?public String getCupSize() { ?? ??? ?return cupSize; ?? ?} ?? ?public void setCupSize(String cupSize) { ?? ??? ?this.cupSize = cupSize; ?? ?} ? ?? ?@Override ?? ?public String toString() { ?? ??? ? ?? ??? ?return "GirlVo [girlId=" + girlId ?? ??? ??? ??? ?+",girlName=" + girlName ?? ??? ??? ??? ?+",age=" + age ?? ??? ??? ??? ?+",height=" + height ?? ??? ??? ??? ?+",cupSize=" + cupSize ?? ??? ??? ??? ?+"]"; ?? ?} }
將Object轉(zhuǎn)換為數(shù)組的情況
今天在使用一個(gè)別人寫(xiě)的工具類,這個(gè)工具類,主要是判空操作,包括集合、數(shù)組、Map等對(duì)象是否為空的操作。
下面展示了一部分代碼:
public static boolean isEmpty(Object object) { ? ? if(object == null){ ? ? ? ? ?return true; ? ? ?} ? ? ?//數(shù)組判空 ?? ? if (object.getClass().isArray()) { ?? ? ? ? ? Object[] obj = (Object[])object; ? ? ? ? ? ?return obj.length == 0; ?? ? }?? }
在外部,我傳進(jìn)來(lái)一個(gè)數(shù)組后,可以看到直接強(qiáng)轉(zhuǎn)為數(shù)組。
我測(cè)試了下,轉(zhuǎn)換異常。
后來(lái)我自己封裝了下,正常的操作應(yīng)該是這樣的:
public static boolean isEmpty(Object object) { ? ? if(object == null){ ? ? ? ? ?return true; ? ? ?} ? ? ?//數(shù)組判空 ?? ? if (object.getClass().isArray()) { ?? ? ? ? ? int len = Array.getLength(object); ?? ? ? ??? ?Object[] obj = new Object[len]; ?? ? ? ??? ?for(int i = 0; i < len; i++) { ?? ? ? ??? ??? ?obj[i] = Array.get(obj, i); ?? ? ? ??? ?} ?? ? ? ? ? ?return obj.length == 0; ?? ? }?? }
最后測(cè)試通過(guò)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于springMvc+hibernate的web application的構(gòu)建
下面小編就為大家?guī)?lái)一篇基于springMvc+hibernate的web application的構(gòu)建。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10詳解Java?ReentrantLock可重入,可打斷,鎖超時(shí)的實(shí)現(xiàn)原理
前面講解了ReentrantLock加鎖和解鎖的原理實(shí)現(xiàn),但是沒(méi)有闡述它的可重入、可打斷以及超時(shí)獲取鎖失敗的原理,本文就重點(diǎn)講解這三種情況,需要的可以了解一下2022-10-10java如何在項(xiàng)目中實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能
這篇文章主要介紹了java如何在項(xiàng)目中實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能的相關(guān)資料,EasyExcel是一個(gè)基于Apache?POI開(kāi)發(fā)的開(kāi)源Java庫(kù),用于簡(jiǎn)化Excel文件的讀寫(xiě)操作,文中將用法介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10詳解Spring整合Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)
本篇文章主要介紹了詳解Spring整合Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03Java日期時(shí)間字符串和毫秒相互轉(zhuǎn)換的方法
這篇文章主要為大家詳細(xì)介紹了Java日期時(shí)間字符串和毫秒相互轉(zhuǎn)換的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12重寫(xiě)hashCode()和equals()方法詳細(xì)介紹
這篇文章主要介紹了重寫(xiě)hashCode()和equals()方法詳細(xì)介紹,涉及重寫(xiě)equals()方法,重寫(xiě)hashCode()方法,重寫(xiě)equals()而不重寫(xiě)hashCode()的風(fēng)險(xiǎn)等相關(guān)內(nèi)容的介紹,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01去掉 IDEA 中 mybatis配置文件的局部背景顏色(圖解)
這篇文章通過(guò)圖文并茂的形式給大家介紹了去掉IntelliJ IDEA 中 mybatis配置文件的局部背景顏色及mybatis 對(duì)應(yīng)的 xml 文件警告的方法圖解,需要的朋友可以參考下2018-09-09