使用Java中的构造函数创建对象数组

时间:2014-10-30 22:52:45

标签: java arrays

如果我有以下课程:

public class Hello {
  private String name;

  public Hello(String n) {
    this.name = n;
  }

  public int getSize(int x) {
   return x + (this.name.length());      
  }
}

现在,如果我想创建一个包含5个Hello对象的数组,我可以说

Hello[] t = new Hello[5];

我的问题是:

i)如何在数组t的每个元素上调用构造函数

ii)在调用构造函数之后,如何调用方法将参数x传递给数组的每个元素?

2 个答案:

答案 0 :(得分:3)

  

i)如何在数组t的每个元素上调用构造函数

遍历数组的每个元素,并使用适当的构造函数和参数初始化元素:

for (int i = 0; i < t.length; i++) {
    t[i] = new Hello("some string");
}

  

ii)在调用构造函数之后,如何调用该方法并将参数x传递给数组的每个元素?

再次,遍历数组并在数组元素上调用所需的方法。

int x = ...; //define some value
for (int i = 0; i < t.length; i++) {
    System.out.println(t[i].getSize(x));
}

答案 1 :(得分:1)

如果您希望Hello的每个实例包含不同的字符串,我首先初始化一个字符串数组,然后迭代这些字符串以创建Hello个实例的数组。您也不需要遍历数组两次,因为您可以初始化然后调用该方法。您还可以将此抽象为Hello类中的静态方法作为静态构造函数。

public class Hello {
    ...
    public static final Hello[] fromStrings(final String[] words, final int x) {
        final Hello[] hellos = new Hello[words.length];
        for (int i = 0; i < words.length; i++) {
            hellos[i] = new Hello(words[i]);
            System.out.println(hellos[i].getSize(x));
        }
        return hellos;
    }
}