动态创建任意类型的数组

邓尼茨我今天去赶集 2020年09月17日 940次浏览

在我写超黑反射时,总是遇到数组反射时报类型不匹配的错误,原因是在创建数组时,返回了Object[]类型,擦除了原始类型,这会导致反射时报错。
感谢下面这段代码的提供者!Java博大精深!

public <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;
}