【问题标题】:Java member variables as associative array like AS3Java 成员变量作为关联数组,如 AS3
【发布时间】:2012-07-10 20:37:04
【问题描述】:

在 ActionScript 2 和 3 中,我们可以像访问关联数组一样访问类的成员变量。

例如,

//AS3 Code    
private var tempvar:String="Hello";

    function printString()
    {
       trace(this.tempvar);
      trace(this[tempvar]);// would print the same as above
    }

我想知道在 Java 中是否也可以这样做。

我需要这个的原因是,我的 java 代码中有一些变量,如下所示

//java code
private String var_1, var_2, var_3, var_4;

要访问这些变量,我必须编写 4 条不同的语句

//java code
var_1="SomeValue1";
var_2="SomeValue2";
var_3="SomeValue3";
var_4="SomeValue4";

如果是在 AS3 中,我可以做这样的事情

//AS3 Code
for( var i=1; i<=4;i++)
{
 this["var_"+i]="SomeValue"+i;
}

如果有人可以让我知道如何在 Java 中做同样的事情,我会非常高兴。

谢谢

【问题讨论】:

    标签: java actionscript-3 associative-array


    【解决方案1】:

    理论上,您可以使用反射 API 做到这一点。实际上,您不会在 Java 中使用这种编码风格。

    【讨论】:

      【解决方案2】:

      我认为你需要重构你的 Java 代码...

      您可以使用Map&lt;String, String&gt; 来实现。

      【讨论】:

      • +1 这确实是存储值的方法:使用地图。要访问方法,您必须使用反射 API。
      【解决方案3】:

      你可以使用一个数组,例如:

      String[] myVars = new String[4];
      for(int i = 0; i < myVars.length; i++)
      {
       myVars[i]="SomeValue"+i;
      }
      

      【讨论】:

        【解决方案4】:

        你可以使用 beanutils: http://commons.apache.org/beanutils/

        BeanUtils.setProperty(yourVarsObject, "foo", "bar");
        

        这将调用 yourVarsObject 的 setFoo("bar")

        【讨论】:

          猜你喜欢
          • 2021-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-17
          相关资源
          最近更新 更多