吸气剂,二传手,阵列

时间:2013-05-31 04:56:46

标签: java arrays setter getter

我不确定这是否可行。我完成了我的研究,并没有找到太多的东西。这对我来说非常困难,我只是希望有办法。

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

所以我的例子和问题:

让我们在一堂课中说:

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。有人可以解释一下原因吗?

3 个答案:

答案 0 :(得分:2)

唯一可能的问题,在琐碎的实施中

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

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

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

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

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

答案 1 :(得分:0)

你可以做到

array=c.getArray(); 

答案 2 :(得分:0)

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

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

public static void main(String[] args){
    class c = new class();
    String[] array = c.getArray(); 
}