如何创建原始数据类型的通用数组的深层副本?

时间:2019-06-17 14:12:31

标签: java arrays generics primitive-types

我正在尝试创建类型为int,double,boolean的二维数组的深层副本。

这个问题Write a generic method to copy an array对我有很大帮助(请参阅下文)。但是问题是,实际上在我的代码中,能够简单地对一个基本类型数组进行deepCopy复制会好得多。

private <T> T[][] arrayCopy(T[][] original) {
    Class<?> arrayType = original.getClass().getComponentType().getComponentType();

    int[] dims = {original.length, original[0].length};
    T[][] copy = (T[][]) java.lang.reflect.Array.newInstance(arrayType, dims);

    for(int i = 0; i<dims[0]; i++){
        for(int j = 0; j<dims[1], j++){
            copy[i][j] = original[i][j];
        }
    }
    return copy; 
}

我对Java泛型的了解非常有限,我不确定我希望实现的目标是什么。我将不胜感激。

1 个答案:

答案 0 :(得分:0)

泛型不适用于基本类型。基本数组是引用类型,您可以使用泛型来匹配输入和输出类型,但是您不能应用绑定来检查它是否是数组类型,因为基本数组类型的唯一超类型是export class AppComponent extends BaseComponent { constructor(injector: Injector) { super(injector) } ngOnInit() { super.ngOnInit() this.myService.getUsers() } } 。要在所有数组类型上使用相同的代码,必须使用Object中的特殊方法来获取和设置数组元素,获取长度等。

java.lang.reflect.Array