我正在尝试创建类型为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泛型的了解非常有限,我不确定我希望实现的目标是什么。我将不胜感激。
答案 0 :(得分:0)
泛型不适用于基本类型。基本数组是引用类型,您可以使用泛型来匹配输入和输出类型,但是您不能应用绑定来检查它是否是数组类型,因为基本数组类型的唯一超类型是export class AppComponent extends BaseComponent {
constructor(injector: Injector) {
super(injector)
}
ngOnInit() {
super.ngOnInit()
this.myService.getUsers()
}
}
。要在所有数组类型上使用相同的代码,必须使用Object
中的特殊方法来获取和设置数组元素,获取长度等。
java.lang.reflect.Array