通过在java中定义字符串数组中的对象名来创建对象

时间:2014-08-28 10:08:48

标签: java

通常,我们将对象创建为:

String s1 = "a";
String s2 = "b";
String s3 = "c";
String s4 = "d";
...

我尝试用两个字符串数组创建它们:

String[] names = { "s1", "s2", "s3", "s4" };
String[] vals  = { "a", "b", "c", "d" };

int len = names.length;

for(int i = 0; i < len; i++){
   String names[i] = vals[i];
}

但它不起作用。我该怎么办?

2 个答案:

答案 0 :(得分:0)

您的价值名称及其内容是不同的东西。 在你的例子中,你犯了一个错误:

String[] names = { "s1", "s2", "s3", "s4" };
String[] vals  = { "a", "b", "c", "d" };

int len = names.length;

for(int i = 0; i < len; i++){
//name[i] already exists so you can remove String
   names[i] = vals[i];
}

在你的例子中没有s1,s2等字符串,只有名字[]是一个String数组。 你想做什么?

在我看来,你正试图获得一个关键/价值类型的数据。所以你需要的是一张地图。

例如:

Map<String, String> namesAndValues = new HashMap<String,String>();
for(int i = 0; i < numberOfNamesYouNeedToPut; i++){
// supposing vals's size is at least numberOfNamesYouNeedToPut
    namesAndValues.put("s" + i+1, vals[i]);
}

答案 1 :(得分:0)

当你这样做时

for(int i = 0; i < len; i++){
   names[i] = vals[i];
}

它只是用String数组的值替换String数组名的值。

此外,String names[i] = vals[i];不是有效的数组声明和初始化。

编辑:

String newArray[] = new String[len];
System.arraycopy(vals,0,newArray,0,len);

这会将值复制到新数组。