创建对象数组时的构造函数

3

当我创建一个对象数组时,如何在每个对象内部添加构造函数的参数?像这样:

foos = new Foo[10];

我该如何使用构造函数创建10个对象?我不明白应该在哪里传递参数给每个对象的构造函数?


2
你刚刚定义了数组,现在需要循环遍历它并将每个元素初始化为 foos[i] = new Foo(...) - SomeJavaGuy
6个回答

6
foos = new Foo[10];

创建一个可以容纳10个Foo实例引用的数组。但是,所有引用都被初始化为null。
您必须分别为数组的每个元素调用构造函数,在此时可以指定任何想要的参数:
foos[0] = new Foo (...whatever arguments the constructor requires...);
...

3

这只是为了分配一个新的数组对象来保存多个元素的类型Foo。为了创建并存储实际对象,您将执行以下操作:

foos[0]=new Foo(); //Call constructor here
.
.
.
foos[10]= new Foo(); //Call constructor here

2
foos = new Foo[10];

这是创建一个数组类型Foo,并不是创建对象。
要进行初始化,请按照以下步骤进行:
for(int i=0;i<foos.length; i++){
   foos[i] =  new Foo (your-argument);
}

请参阅数组了解更多详情。


2

你可以这样内联完成:

Foo[] foos = new Foo[] {
                  new Foo(1),
                  new Foo(2),
                  new Foo(10)
               };

或者像这样:
Foo[] foos = {
                new Foo(1),
                new Foo(2),
                new Foo(10)
             };

1

假设Foo以字符串为参数,那么Foo的构造函数如下:

public Foo(String arg){
this.arg = arg;
}

如果需要传递给构造函数的参数彼此不同,则需要为每个元素使用单独的初始化方式。正如@Sanjeev所提到的,但是要传递一个参数。
foos[0]=new Foo(argOne);
.
.
foos[10]= new Foo(argTen);

另一方面,如果您的参数与数组索引有关,则应像@Sumit提到的那样使用循环。
for(int i=0;i<foos.length; i++){
   foos[i] =  new Foo (arg + i);
}

0
所以,为了创建“10”个新对象,您需要创建一个数组来保存这些对象,然后循环遍历列表,同时将一个新对象添加到数组的每个索引中。
int foosSize = 10;
Foo[] foos = new foos[foosSize];

for(int i = 0; i < foosSize; i++) {
    foos[i] = new Foo();
}

这将创建一个新的foo对象并将其添加到您创建的数组中的索引中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接