关于“动态”变量的Java快速问题

时间:2011-05-20 18:21:07

标签: java variables configuration

假设我有一个从配置文件中读取信息的应用程序。让我们说每次在配置文件中遇到单词“Hello”时,我希望能够创建一个String类型的变量,并将其命名为Hello0,Hello1,Hello2等等......

我知道这样的动态变量在编程中是不可能的(大部分)。但是会有某种解决方法吗?就像让用户决定要拥有多少变量一样?

2 个答案:

答案 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”映射到字符串值列表。)