gpt4 book ai didi

java - 为 Arrays/ArrayList 实现 Getter 和 Setter 方法的正确方法

转载 作者:行者123 更新时间:2023-12-02 16:00:16 25 4
gpt4 key购买 nike

为了说明我的担忧,我将使用以下不完整的测试类:

import java.util.ArrayList;
public class Test
{
private int[] myArray = {1,2,3,4,5};
private ArrayList<Integer> myArrayList = new ArrayList<Integer>();

public int[] getMyArray()
{
int[] temp = new int[myArray.length];

for(int i = 0;i<myArray.length;++i)
{
temp[i] = this.myArray[i];
}

return temp;
}

public ArrayList<Integer> getMyArrayList()
{
ArrayList<Integer> temp = new ArrayList<Integer>();

for(int i = 0;i<myArrayList.size();++i)
{
temp.add(this.myArrayList.get(i));
}

return temp;
}

public void setMyArray(int[] newArray)
{
if(newArray.length!=myArray.length)
{
return;
}

for(int i = 0;i<myArray.length;++i)
{
this.myArray[i] = newArray[i];
}
}

public void setMyArrayList(ArrayList<Integer> newArrayList)
{
for(int i = 0;i<myArrayList.size();++i)
{
this.myArrayList.add(newArrayList.get(i));
}
}
}

我用上面的代码说明的是分别为 Array 和 ArrayList 实现 getter 和 setter 方法的正确方法吗?我认为最好在 getter 方法中返回 Arrays 和 ArrayLists 的副本,并在 setter 方法中设置 Array/ArrayLists 中的每个单独元素。如果这是不正确的,请说明实现这些方法的正确方法。

最佳答案

这取决于您想要做什么,在某些情况下保持它不可变是有用的,这看起来就像您想要的那样。您可以像这样更简洁地编写方法。

private int[] myArray = {1,2,3,4,5};
private ArrayList<Integer> myArrayList = new ArrayList<Integer>();

public int[] getMyArray()
{
return Arrays.copyOf(myArray, myArray.length);
}

public ArrayList<Integer> getMyArrayList()
{
return new ArrayList<>(myArrayList);
}

public void setMyArray(int[] newArray)
{
this.myArray = Arrays.copyOf(newArray, newArray.length);
}

public void setMyArrayList(ArrayList<Integer> newArrayList)
{
this.myArrayList = new ArrayList<>(newArrayList);
}

关于java - 为 Arrays/ArrayList 实现 Getter 和 Setter 方法的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47840657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com