我正在将一些C ++代码移植到Java。
以下是我的代码片段:
class Foo{
...
private class Bar
{
public byte[] data;
public int len;
Bar() {
data = new byte[256];
len = 0;
}
}
...
private Bar[] myArray = new Bar[10];
我想要一个包含10个对象的数组。但是当我想在我的代码中进一步使用数组时,我注意到所有10个成员都是'null'。
作为一种解决方法,我可以在主类的构造函数中使用for循环来解决它:
Foo() {
for( int i=0; i<myArray.length; i++ )
myArray[i] = new Bar();
}
有没有更好的方法一次调用10个构造函数,而不需要for-loop?
答案 0 :(得分:1)
为了让数组的每个索引引用一个唯一的对象,你需要一些for循环等价物。
例如:
IntStream.range(0,myArray.length).forEach(i->myArray[i] = new Bar());
否则,如果您不介意数组的所有索引引用相同的对象:
Arrays.fill(myArray, new Bar());
答案 1 :(得分:1)
如果您准备使用List接口的实现,则可以执行以下操作:
List<Bar> myArray = new ArrayList<>(Collections.nCopies(10, new Bar());
/* ^ number of copies */
但这对于原始数组([n]
样式)