使用string []中的名称创建对象

时间:2013-08-02 03:46:03

标签: java arrays

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

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

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

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

4 个答案:

答案 0 :(得分: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]);
}       

答案 1 :(得分:1)

有几件事:

String[] arrayOfNames = String[3];

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

String[] arrayOfNames = new String[3];

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

为此,您可以让constructorString为参数。如果这样做,您可以将代码更改为:

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

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

NB:我在上面的代码中使用了3,但是你应该使用常量或某种变量,即final int LENGTH = 3;

答案 2 :(得分:1)

你应该向我们展示Person类。但可以想象,这个类将有一个带String的构造函数。也许你应该将String中的从数组传递给构造函数。

编辑:正如Ran Eldan 显示你的回答。回答1+!


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

你说:

  

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

你试图给变量赋予字符串的名称,你不应该尝试这样做,因为这不是Java的工作原理。变量名称并不是那么重要,当然不像您认为的那么重要,而是 对象引用 才是真正重要的。如果需要将对象与String关联,请使用Map,但我认为您甚至不需要这样做。只需使用数组或ArrayList。这里有同样类型的问题已经被问到了一百万次,如果你稍微搜索一下,你会找到相同的答案。

答案 3 :(得分:0)

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

String className = "InstanceFromString";
InstanceFromString test = (InstanceFromString)Class.forName(className).newInstance();
System.out.println(test);