使用 for 循环将值直接传递给 setter 方法
Passing values directly to setter method using for loop
这是我的 getter 和 setter:
private int[] test;
public int[] getTest() {
return Arrays.copyOf(test, test.length);
}
public void setTest(int[] test) {
this.test= Arrays.copyOf(test, test.length);
}
这是我手动将值传递给 setter 方法的代码
Sample sample = new Sample();
sample.setTest(new int[]{0,1,2,3});
我想要的是这样的:
for (int i = 0; i < 3; i++) {
//code here for passing the value to the setter
}
这对我有效,有没有办法使用 for 循环传递这些值?另外我想知道如何将数组作为一个整体传入?
不,您不能传递 for-loop
作为新 test
数组值的值。
你可以做的是编写一个单独的函数,从 for-loop
:
中为你生成一个 int 数组
public int[] getNumbers(int start, int end, int increment) {
List<Integer> values = new ArrayList<>();
for (int i = start; i < end; i += increment) {
values.add(i);
}
return values.stream().mapToInt(i->i).toArray();
}
然后可以这样使用(根据您问题中的 for-loop
):
sample.setTest(getNumbers(0, 3, 1));
或者对于更简单的数组(因此只是从 startNumber 到 endNumber 的整数范围,增量为 1),您可以执行以下操作:
sample.setTest(IntStream.rangeClosed(1, 10).toArray());
nbokmans 的回答很正确;但我建议退后一步,看看您的要求。
我的意思是:你应该决定是否要
- 一个允许传入数组的接口
- 允许传入单个值的接口
换句话说:如果 common 对你来说 add 单个值到那个字段......那么你应该相应地设计您的界面。像这样:
public class Whatever {
private final List<Integer> data = new ArrayList<>();
public void append(int value) {
data.add(value);
}
public void getData() {
return new ArrayList<>(data);
}
例如。
这是我的 getter 和 setter:
private int[] test;
public int[] getTest() {
return Arrays.copyOf(test, test.length);
}
public void setTest(int[] test) {
this.test= Arrays.copyOf(test, test.length);
}
这是我手动将值传递给 setter 方法的代码
Sample sample = new Sample();
sample.setTest(new int[]{0,1,2,3});
我想要的是这样的:
for (int i = 0; i < 3; i++) {
//code here for passing the value to the setter
}
这对我有效,有没有办法使用 for 循环传递这些值?另外我想知道如何将数组作为一个整体传入?
不,您不能传递 for-loop
作为新 test
数组值的值。
你可以做的是编写一个单独的函数,从 for-loop
:
public int[] getNumbers(int start, int end, int increment) {
List<Integer> values = new ArrayList<>();
for (int i = start; i < end; i += increment) {
values.add(i);
}
return values.stream().mapToInt(i->i).toArray();
}
然后可以这样使用(根据您问题中的 for-loop
):
sample.setTest(getNumbers(0, 3, 1));
或者对于更简单的数组(因此只是从 startNumber 到 endNumber 的整数范围,增量为 1),您可以执行以下操作:
sample.setTest(IntStream.rangeClosed(1, 10).toArray());
nbokmans 的回答很正确;但我建议退后一步,看看您的要求。
我的意思是:你应该决定是否要
- 一个允许传入数组的接口
- 允许传入单个值的接口
换句话说:如果 common 对你来说 add 单个值到那个字段......那么你应该相应地设计您的界面。像这样:
public class Whatever {
private final List<Integer> data = new ArrayList<>();
public void append(int value) {
data.add(value);
}
public void getData() {
return new ArrayList<>(data);
}
例如。