如果我有以下课程:
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传递给数组的每个元素?
答案 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;
}
}