如何在Java中在运行时设置变量的名称?

时间:2014-10-07 18:17:22

标签: java

我想让用户能够在运行时命名String变量。

Scanner input = new Scanner(System.in);
String name = input.nextLine();

该程序要求我输入一个单词。然后我如何创建一个标识符是用户输入的变量?

我试过这个:

String (name) = "blah";

但它不起作用。

3 个答案:

答案 0 :(得分:2)

您可以使用地图

String input1 = ...;
String input2 = ...;
Map m = new HashMap<String,String>();
m.put(input1, input2);

答案 1 :(得分:1)

这在java中不起作用,导致变量名在运行时“消失”。编译版本不再使用它们。

在PHP中,它是可能的,因为PHP在运行时被解释。

您可以获得的“最接近”是使用散列映射:

Map<String,String> kvps = new HashMap<String,String>();
kvps.put ("varname", "varvalue");
kvps.put ("hello", "world");
kvps.put ("foo", "bar");

for (Map.Entry<String, String> kvp: kvps.getEntrySet()){
  System.out.println(kvp.getKey() + " = " + kvp.getValue());
}

答案 2 :(得分:0)

有一种方法可以获得变量的名称 - 如果它是一个类的字段,那么你可以使用反射:

Field[] classFields = classInstance.getDeclaredFields();

现在您可以获取字段名称:

classFields[index].getName();