假设我有一个从配置文件中读取信息的应用程序。让我们说每次在配置文件中遇到单词“Hello”时,我希望能够创建一个String类型的变量,并将其命名为Hello0,Hello1,Hello2等等......
我知道这样的动态变量在编程中是不可能的(大部分)。但是会有某种解决方法吗?就像让用户决定要拥有多少变量一样?
答案 0 :(得分:7)
哈希地图非常适合存储此类信息。
hashMap.put("Hello0", string);
存储您的信息
hashMap.get("Hello0");
拉出来。
如果你想让它们成为“类”(成员)变量,你可以使hashmap成为一个成员变量,这样它就会坚持在类的生命周期内。
这很常见。像Ruby这样的许多动态语言实际上都在为所有变量使用哈希映射,但它们隐藏了语法,因此您可以像使用任何语言一样访问它们。
如果语法真的让你烦恼,那就开始上课:
public class MyClass {
private HashMap<String, Object> vars=new HashMap();
private var(String s, Object o) {
vars.put(s, o);
}
private Object var(String s) {
return vars.get(s);
}
}
然后你可以在班上的任何地方使用:
var("var1", 5); // create or update variable 1 to the value 5
System.out.println("value ="+var("var2")); // get variable
稍微好一点的语法。 (但要注意第一个例子 - 如果你有问题,请查看“Autoboxing”,因为这是Java在将int作为对象传递时所做的事情)
答案 1 :(得分:4)
听起来你只需要一个List<String>
- 或者如果你需要通过名称访问它们,可能是Map<String, List<String>>
。 (因此“Hello”映射到字符串值列表。)