-3

我不确定这是否可能。我已经完成了我的研究,并没有发现太多。这对我来说非常困难,我只是希望有办法。

问题:是否可以使用 getter 和 setter 将整个数组(即数组包含的所有值)发送到另一个类?

所以我的例子和问题:

假设在一堂课上我有:

public class(){
private String[] array= new String[300]

public String[] getArray()
{
return array;
}

public void setArray(String[] array)
{
this.array = array;
}
}

现在让我们说数组充满了值。然后我想在另一个类中获取这些值。

public void class2(){
public static void main(String[] args){
        String[] array= new String[300];
        class c = new class();
        array[]=c.getArray(); //I know this is wrong I am just unsure what syntax or methods to use

我希望我能正确解释我的问题。

编辑:好的,现在文件可以在我使用时编译

array=c.getArray();

并使用 for 循环输出数组,它为所有内容显示 null。有人可以解释为什么吗?

4

3 回答 3

2

唯一的潜在问题,在琐碎的实现中

A[] getArray() { return myArray; };

getter 通常会返回对数组的引用。调用代码将能够保留此引用并观察(可能更改的)内容,并对其进行修改,这可能会导致再次调用 getter 的不相关代码部分的奇怪行为。当某些库与不受信任的代码链接运行时,这一点尤其重要;在这种情况下,可能存在安全漏洞。

为避免,最好使用数组clone()方法返回集合数组的副本:

   A[] getArray() { return myArray.clone(); }
   void setArray(A array) { myArray = array.clone(); }

当然,如果阵列非常大,这会降低性能。在您完全控制的某些程序中,克隆可能不那么重要,并且可以使用代码审查来排除对数组的不适当修改。

于 2013-05-31T05:07:40.593 回答
0

array[]=c.getArray();应该array = c.getArray();

事实上,你的整个main方法可能是

public static void main(String[] args){
    class c = new class();
    String[] array = c.getArray(); 
}
于 2013-05-31T04:59:41.130 回答
0

你可以做

array=c.getArray(); 
于 2013-05-31T04:59:37.983 回答