数组克隆不起作用

时间:2013-06-16 11:06:48

标签: java arrays eclipse clone

我的代码出了什么问题?

在主要方法中我这样做:

int [] test=new int[48];

test=etable(Right[]).clone();

我想要的是,'test'数组与'etable'方法的输出完全相同。

我的方法名为'etable':

public static int [] etable(int [] right){
int [] blabla=new int[48];
...
return blabla[]
}

感谢您的建议

2 个答案:

答案 0 :(得分:5)

  

我的代码出了什么问题?

这一行是编译错误:

    test = etable(Right[]).clone();

如果right(或Right)是变量(使用类型int[]声明),那么您应该像这样编写方法调用:

    test = etable(right).clone();

如果Right是一种类型,那么这不是创建数组的正确语法。 (从你如何编写etable方法来判断,你不应该将它传递给新数组。)

第二个问题是这个序列没有意义:

    int test[] = new int[48];
    test = etable(...).clone();

您正在分配一个包含48个元素的数组......然后通过为test变量分配不同的数组引用将其丢弃。

第三个问题是clone()最有可能是多余的。您的etable方法正在分配一个新数组(在blabla中)并返回它。然后调用代码复制新数组。除非etable在某处保存对blabla数组的引用,否则复制步骤无法实现任何目的。

最后一个问题是,如果Right确实是变量名,那么这是一种严重的Java样式违规。在Java中,变量名称不应以大写字母开头。

答案 1 :(得分:1)

使用例如Arrays.copy()

int[] tmp = etable(whatever);
int[] test = Arrays.copy(tmp, 0, tmp.length);

关于您的原始代码,例如:

test = ebtable(Right[]).clone();

不是合法的Java(无论如何都是Right。)。