【问题标题】:Java quick question on "dynamic" variables关于“动态”变量的 Java 快速问题
【发布时间】:2011-08-29 21:14:47
【问题描述】:

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

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

【问题讨论】:

  • 在运行时,变量名没有任何意义。您能否添加更多关于您正在尝试做什么的详细信息?
  • 但是变量的数量是多少,这是我试图通过配置文件控制的

标签: java variables configuration


【解决方案1】:

哈希图非常适合存储此类信息。

hashMap.put("Hello0", string);

存储您的信息

hashMap.get("Hello0");

把它拿出来。

如果您希望这些是“类”(成员)变量,您可以将哈希图设为成员变量,这样它就会在类的生命周期中持续存在。

这很常见。许多像 Ruby 这样的动态语言实际上对所有变量都使用了 hashmap,但是它们隐藏了语法,因此您可以像使用任何语言一样访问它们。

如果语法确实让您感到困惑,请像这样开始您的课程:

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

为了更好的语法。 (但请注意第一个示例——如果您遇到问题,请查看“自动装箱”,因为这是 Java 在将 int 作为对象传递时所做的)

【讨论】:

    【解决方案2】:

    听起来您只需要 List&lt;String&gt; 代替 - 或者如果您需要按名称访问它们,也许是 Map&lt;String, List&lt;String&gt;&gt;。 (所以“Hello”映射到一个字符串值列表。)

    【讨论】:

    • 你是人工智能吗?始终登录 - 非常快速和准确。给你编码的人太棒了!
    • 恭喜乔恩,你刚刚没有通过图灵测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2021-08-06
    • 2020-02-11
    • 2010-12-12
    相关资源
    最近更新 更多