嘿,我在使用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()
答案 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
中使用它。
为此,您可以让constructor以String
为参数。如果这样做,您可以将代码更改为:
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);