通过for循环添加具有不同名称的对象

Gan*_*row 5 java

执行以下操作的最佳方法是:

List<MyObject> list = new LinkedList<MyObject>();

for(int i=0; i<30;i++)
{
  MyObject o1 = new MyObject();
  list.add(o1);
}
Run Code Online (Sandbox Code Playgroud)

但事情是我不想创建具有相同名称的对象,我想用不同的名称创建它们,o1,o2,o3,o4,o5,o6,o7,o8,o9,o10我想将每个添加到列表中.做这个的最好方式是什么 ?

Ste*_*yle 10

您不需要为每个对象使用不同的名称.由于o1对象是在for循环中声明的,因此o1变量的范围仅限于for循环,并且在每次迭代期间重新创建...除了每次它将引用在该迭代期间创建的新对象.请注意,变量本身不存储在列表中,只存储在它所引用的对象中.

如果您不需要对新对象执行任何其他操作,只需将其添加到列表中,您可以执行以下操作:

for(int i=0; i<30;i++)
{
  list.add(new MyObject());
}
Run Code Online (Sandbox Code Playgroud)

  • @Younes:我不明白为什么不.@Stephen:Re*"...... o1对象在循环中声明,它的(原文如此)范围仅限于for循环......"*这在某种重要方面是不正确的.*变量*`o1`的范围是循环的;*object*不是,只要它在循环之外存在一些引用(就像在这种情况下一样,在列表中). (3认同)

mar*_*ert 7

你为什么要给他们不同的名字?你正在for循环中创建对象,因此它不存在于外部,因此我认为没有理由给它们不同的名称.

回答你的问题:我看到的唯一方法,但我可能错了,就是创建一个MyObjects数组并执行:

List<MyObject> list = new LinkedList<MyObject>();
MyObject[] o = new MyObject[30];

for(int i = 0; i < 30; i++) {
    o[i] = new MyObject();
    list.add(o[i]);
}
Run Code Online (Sandbox Code Playgroud)