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

n0p*_*0pe 1 java variables configuration

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

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

Bil*_*l K 7

哈希映射非常适合存储此类信息.

hashMap.put("Hello0", string);
Run Code Online (Sandbox Code Playgroud)

存储您的信息

hashMap.get("Hello0");
Run Code Online (Sandbox Code Playgroud)

拉出来.

如果你想让它们成为"类"(成员)变量,你可以使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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在班上的任何地方使用:

var("var1", 5); // create or update variable 1 to the value 5
System.out.println("value ="+var("var2"));  // get variable
Run Code Online (Sandbox Code Playgroud)

为了更好的语法.(但要注意第一个例子 - 如果你有问题,请查看"Autoboxing",因为这是Java在将int作为对象传递时所做的事情)