除了排序和查找,我们还可以对原始类型数组做什么?另一个有用的技术是将一个原始数组转换为等价的对象类型数组。每个对应元素使用它们的封装器类,例如在封装数组中,37成为Integer(37)。
import java.util.Arrays;
import java.lang.reflect.Array;
public class ArrayDemo3
{
// if input is a single-dimension
primitive array,
// return a new array consisting
of wrapped elements,
// else just return input argument
public static Object toArray(Object vec)
// if null, return
if (vec == null)
{
return vec;
}
// if not an array or elements
not primitive, return
Class cls = vec.getClass();
if (!cls.isArray()) {
return vec;
}
if
(!cls.getComponentType().isPrimitive())
{
return vec;
}
// get array length and create
Object output array
int length = Array.getLength(vec);
Object newvec[] = new Object[length];
// wrap and www.gzlij.com copy elements
for (int i = 0; i
{
newvec[i] = Array.get(vec, i);
}
return newvec;
}
public static void main(String args[])
{
// create a primitive array
int vec[] = new int[]{1, 2, 3};
// wrap it
Object wrappedvec[] =
(Object[])toArray(vec);
// display result
for (int i = 0; i
{
System.out.println(wrappedvec[i]);
}
}
}
方法"toArray"的参数是一个Object对象(数组可以被赋值给一个Object引用)。如果参数是null或者代表的不是原始类型数组那么这个方法简单的返回参数值。java.lang.Class工具类用于判断参数是否是一个数组并获取数组的底层元素的类型。