我不确定这是否可行。我完成了我的研究,并没有找到太多的东西。这对我来说非常困难,我只是希望有办法。
问题:是否可以使用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。有人可以解释一下原因吗?
答案 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();
}