java如何将Object数组转换为指定类型数组
作者:zhangbeizhen18
这篇文章主要介绍了java如何将Object数组转换为指定类型数组,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
将Object数组转换为指定类型数组
1.转换函数
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.测试main函数
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.实体类
public class GirlVo implements Serializable { private static final long serialVersionUID = -8545755852948661858L; /**ID号*/ 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转换为数组的情况
今天在使用一个别人写的工具类,这个工具类,主要是判空操作,包括集合、数组、Map等对象是否为空的操作。
下面展示了一部分代码:
public static boolean isEmpty(Object object) { if(object == null){ return true; } //数组判空 if (object.getClass().isArray()) { Object[] obj = (Object[])object; return obj.length == 0; } }
在外部,我传进来一个数组后,可以看到直接强转为数组。
我测试了下,转换异常。
后来我自己封装了下,正常的操作应该是这样的:
public static boolean isEmpty(Object object) { if(object == null){ return true; } //数组判空 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; } }
最后测试通过。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。