使用for循环将值直接传递给setter方法

时间:2017-06-21 07:59:02

标签: java arrays for-loop getter-setter

这是我的吸气者和二传手:

lookAt

这是我手动将值传递给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);
}

我想要的是这样的:

Sample sample = new Sample();   
sample.setTest(new int[]{0,1,2,3});

这对我有用,有没有办法使用for循环传递这些值?另外我想知道如何传入一个整体数组?

2 个答案:

答案 0 :(得分:2)

不,您无法传递for-loop作为新test数组值的值。

你可以做的是编写一个sepearate函数,为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());

答案 1 :(得分:1)

nbokmans的回答是现场的;但我建议你回到这里,看看你的要求。

我的意思是:你应该决定是否要

  • 允许传入数组的接口
  • 允许传入单个值的接口

换句话说:如果您常见的事情单个值添加到该字段...那么您应该设计相应的界面。像这样:

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);
  }

例如。