使用reflection解压缩数组

我正在尝试解压缩从reflection对象字段获得的数组。 我将常规字段的值设置为Object。 如果它是一个数组,那么我想将我的一般对象转换为一个数组(无论它的类型)并提取其内容

fields[i].setAccessible(true); String key = fields[i].getName(); Object value = fields[i].get(obj); if (value.getClass().isArray()){ unpackArray(value); } 

在我的unpackArray方法中,我尝试将Object Value转换为java.util.Arrays,java.reflect.Array和Array [],但每次都不让我。

有没有办法将我的Object转换为通用数组?

非常感谢Sam

所有数组的唯一父类是Object。

要将数组的值提取为Object[]您可以使用。

 public static Object[] unpack(Object array) { Object[] array2 = new Object[Array.getLength(array)]; for(int i=0;i 

不幸的是,原始数组和对象数组没有共同的数组类作为祖先。 所以解包的唯一选择是装箱原始数组。 如果在调用此方法之前执行空检查和isArray,则可以删除一些检查。

 public static Object[] unpack(final Object value) { if(value == null) return null; if(value.getClass().isArray()) { if(value instanceof Object[]) { return (Object[])value; } else // box primitive arrays { final Object[] boxedArray = new Object[Array.getLength(value)]; for(int index=0;index 

测试: http : //ideone.com/iHQKY