gpt4 book ai didi

Java - 从构造函数填充数组

转载 作者:行者123 更新时间:2023-12-01 18:06:17 25 4
gpt4 key购买 nike

我已经有一段时间没有接触 Java 了,我对如何做到这一点有点困惑。

我有一个“Foo”类,它有一个大小为 5 的私有(private)整数数组。

在类构造函数中,我需要传递这 5 个整数,所以我有这样的东西

public class Foo{

int [] numbers = new int[5];

Foo (int n0, int n1, int n2, int n3, int n4) {
numbers[0] = n0;
numbers[1] = n1;
numbers[2] = n2;
numbers[3] = n3;
numbers[4] = n4;
}

这似乎工作量太大,并且有一种更简单的方法可以实现,但我只是没有做到这一点。类似于 for 循环限制数组长度,例如

Foo(int n0, int n1, int n2, int n3, int n4, int s0, int s1) {
for ( int i = o; i<= numbers.length; i++ ) {
numbers[i]= "n + i"; // This is wrong, but just to get the idea.
}
}

最佳答案

答案在一定程度上取决于您的解决方案的上下文。

如果 5 个整数来自同一域并且打算成为一个组的一部分,那么我建议传递一个代表该组的参数,而不是传递 5 个单独的项。 Java 提供了良好的机制来动态创建各种集合。

一些潜在的“群体”可能是:

public Foo(IntStream values) { ... }
new Foo(Stream.of(1, 3, 5, 7, 9));

public Foo(int[] values) { ... }
new Foo(new int[]{1, 3, 5, 7, 9});

public Foo(int... values) { ... }
new Foo(1, 3, 5, 7, 9);

public Foo(List<Integer> values) { ... }
new Foo(Arrays.asList(1, 3, 5, 7, 9));

所有这些都提供了检查大小、截断和转换为您想要的任何内部格式的方法。如果您希望发送的值的数量发生变化,则需要进行最小的更改。对特定值进行硬编码意味着当值的数量发生变化时,构造函数的签名也会发生变化。

另一方面,如果参数不在同一域中,但实际上表示可区分的属性,那么将它们作为构造函数的单独参数给出是有意义的。但是,在这种情况下,将它们作为集合在内部存储没有多大意义,因此您可能需要使用标准 this.bar = bar 模式将值存储在单独的变量中。

关于Java - 从构造函数填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36191475/

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