-2

嘿,我在使用 Java 时遇到了一些麻烦(令人震惊(讽刺))。我有一个字符串数组,我想做的是遍历数组,使用每个字符串创建一个新对象。这合法吗?

String[] arrayOfNames = String[3];
goGetNamesToFillTheArray();
for(i = 0; i < arrayOfNames.length; i++) {
     Person arrayOfNames[i] = new Person();
}

如果我这样做是不合法的,我该怎么做呢?

为了澄清起见,我想要几个人类型的对象。如果数组包含条目 jon 和 sally,我可以稍后在程序中拥有 jon.doSomething() 和 sally.doSomething()

4

4 回答 4

3

假设您要创建一个 Persons 数组并用名称填充它们:

String[] arrayOfNames = new String[3];
goGetNamesToFillTheArray();
Person[] arrOfPerson = new Person[arrayOfNames.length];
for(int i = 0; i < arrOfPerson.length; i++) {
    arrOfPerson[i] = new Person(arrayOfNames[i]);
}       
于 2013-08-02T03:52:21.600 回答
1

几件事:

String[] arrayOfNames = String[3];

是不正确的。您需要通过new运算符分配内存:

String[] arrayOfNames = new String[3];

据我所知,没有办法动态创建标识符。我有一种感觉,您实际上想要做的是使用数组中的名称,并以某种方式在Person.

为此,您可以让构造函数将 aString作为其参数。如果这样做,您可以将代码更改为:

goGetNamesToFillTheArray();
Person[] people = new Person[3];

for(i = 0; i < 3; i++) 
{
     people[i] = new Person(arrayOfNames[i]);
}

注意:
3在上面的代码中使用过,但你应该使用常量或某种变量,即final int LENGTH = 3;.

于 2013-08-02T03:52:01.443 回答
1

您应该向我们展示 Person 类。但可以想象,这个类将有一个接受字符串的构造函数。也许您应该将数组中的字符串传递给构造函数

编辑:正如 Ran Eldan您展示他的答案。1+那个答案!


编辑:关于您最近对问题的编辑:

你说:

为了澄清起见,我想要几个人类型的对象。如果数组包含条目 jon 和 sally,我可以稍后在程序中拥有 jon.doSomething() 和 sally.doSomething()

您正在尝试为变量提供字符串的名称,并且您不应该尝试这样做,因为这不是 Java 的工作方式。变量名并不是那么重要,当然也没有你想象的那么重要,但真正重要的是对象引用。如果您需要将对象与字符串关联,请使用 Map,但我认为您甚至不需要这样做。只需使用数组或 ArrayList。同类型的问题在这里被问了无数次,如果你稍微搜索一下,你会找到相同的答案。

于 2013-08-02T03:52:15.827 回答
0

如果问题是从 String 类名创建对象,您可以使用以下代码:

String className = "InstanceFromString";
InstanceFromString test = (InstanceFromString)Class.forName(className).newInstance();
System.out.println(test);
于 2013-08-02T03:55:49.320 回答