使用字符串设置属性

时间:2014-03-25 17:18:39

标签: java

是否可以使用字符串作为属性名称在对象上设置属性?我是Java的新手,但在JavaScript中我会做这样的事情:

 Object[propertyNameAsString] = value

搜索后我发现如何使用字符串获取属性,但不知道如何设置属性。我还遇到了一个名为Properties对象的东西,是我需要使用的东西吗?

基本上我只想循环遍历一个充满图像名称的数组,然后将它们各自的属性设置到一个对象上,我将用它来存储实际的图像。这在Java中是可行的还是我应该以另一种方式实现?

修改

这是我的数组的样子:

 static String pngs[] = {"staminaBox", "staminaBoxR", "healthBox", "healthBoxR", "moveBox", "goButton"};

理想情况下,我想循环遍历它们并向资产类添加属性,如下所示:

 for (int i = 0; i < pngs.length; i++) {
    Assets.pngs[i] = createImageFromUrl(pngs[i] + ".png");      
 }

但是现在我意识到这不起作用,因为在我的资产类中我必须先定义属性,如:

 public static Image staminaBox;

我想要做到这一点的全部意义在于,我没有必要为我想要添加的每个图像写出声明。我已经习惯了JavaScript的松散性,但这是否意味着无法绕过这些显式的属性声明? HashMap能让我实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

你可能在谈论几件不同的事情。您是在谈论设置类中定义的变量的值吗?如果是这样,你可能可以使用反射一起破解某些东西,但它不是一个&#34; gimme&#34;在Java中就像在javascript中一样。

你也可以考虑使用属性的HashMap来表示它们的值,或者像你说的那样使用Properties对象(它本身只是一个Map本身)。

答案 1 :(得分:0)

您可以使用Reflection API。请记住,它会很快变得混乱。

因为Java使用Getter和Setter模式,所以您可能不会为成员变量赋值,而是调用自己赋值的方法。

How do I invoke a Java method when given the method name as a string?