Java reflect.Array利用反射对数组容量扩容

java.lang.reflect.Array利用反射机制来获取数组长度并进行数组容量扩容。代码如下:

public class DoubleArray2 {
    public static void main(String args[]) {
        int array[] = {
            1,
            2,
            3,
            4,
            5
        };
        System.out.println("Original size: " + array.length);
        System.out.println("New size: " + ((int[]) doubleArray(array)).length);
        System.out.println(((int[]) doubleArray(array))[1]);
    }
    static Object doubleArray(Object original) {
        Object returnValue = null;
        Class < ?>type = original.getClass();
        if (type.isArray()) {
            int length = Array.getLength(original);//获取数组长度             Class < ?>elementType = type.getComponentType();
            // 根据数组组件的类型,来扩容
            returnValue = Array.newInstance(elementType, length * 2);
            System.arraycopy(original, 0, returnValue, 0, length);
        }
        return returnValue;
    }
}

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。