【问题标题】:Creating Variables at Runtime in Java [closed]在 Java 中在运行时创建变量 [关闭]
【发布时间】:2011-05-07 15:06:09
【问题描述】:

在我的代码中,我有一个非常大的循环,我需要在每次迭代结束时创建一个新变量(整数)。这可能吗?我读到了一个 ScriptEngineManager 类,但我不确定这是否能提供帮助。我想我可以创建一堆等于 0 的整数,但我不确定我需要创建多少次新变量(这取决于循环的条件)。希望这是有道理的。

【问题讨论】:

  • 问题说Java,标签说Javascript,问题主体只是混淆。是Java还是Javascript?它们是你所知道的两种不同(完全不同)的东西。 “创建变量”对您来说究竟是什么意思?
  • 也许他正在通过ScriptEngine API 使用 JavaScript。不过,这个问题非常模糊。我们需要看相关代码。
  • 很抱歉给您带来了困惑。我相信我的意思是 Java ......我不确定这些差异是否真的存在。不是一个用于网络小程序之类的吗?
  • 我猜是 Java,因为他引用了 ScriptEngineManager 和类。重新标记...
  • @Descartes,Java 和 JavaScript 完全不同,尽管名称不同。 Java 是用于小程序的。

标签: java variables integer


【解决方案1】:

不,不能在运行时在 java 中声明变量。但是 java 提供了 java.util.map,可以像下面的例子一样使用它。我们可以假设键是变量名。

Map<String, Object> declareVariableRuntime= new HashMap<String, Object>(); declareVariableRuntime.put("variableName", new Object());

【讨论】:

    【解决方案2】:

    以下是我实施并帮助我轻松解决我的解决方案而没有太多障碍的方式。

    // 创建数组List

    List accountList = new ArrayList(); 
    
    
    
    
    for(int k=0;k < counter;k++){
            accountList.add(k, (String)flowCtx.getValueAt("transitId"+m));
    }
    

    迭代循环并将对象添加到带有索引的数组列表中。

    //在运行时借助索引检索对象

    String a = accountList.get(i));
    

    【讨论】:

    • 这里的“flowCtx”是什么?
    【解决方案3】:

    希望这是有道理的。

    不幸的是,它没有。

    在 Java 中,动态创建变量是没有意义的。这是极难做到的,一旦你做到了,它们就极难使用。 (相比之下,用 Javascript 很容易做到……)

    但是,这只是意味着您需要以不同的方式做您想做的事情。例如,以下内容在循环中进行计算,然后将结果保存在(现有)ArrayList 变量中:

        List<Integer> results = ArrayList<Integer>();
        while (...) {
            // Do computation ...
            int result = ...
            results.add(result);
        }
        // Now we have all of the results in 'results'
    

    或者,如果您想将每个结果绑定到一个不同的名称,您可以执行以下操作:

        Map<String, Integer> results = HashMap<String, Integer>();
        while (...) {
            // Do computation ...
            String name = ...
            int result = ...
            results.put(name, result);
        }
    

    【讨论】:

      【解决方案4】:

      使用数组。在 Javascript 中,将 var results = [] 放在循环之前并使用 results.push(value) 附加结果。在 Java 中,您需要使用 ArrayList。 (顺便说一下,这些是非常不同的语言。)

      【讨论】:

      • 我想我正在用 Java 编码。我不敢相信这是多么业余的错误……不知道我使用的是什么语言。对不起。 'var results = []' 对我来说并不熟悉。谢谢
      • @Descartes -- Matthew 的回答仍然有效。如果您需要存储可变数量的值,请使用集合,例如 ArrayListHashMap
      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多