是否可以使用字符串作为属性名称在对象上设置属性?我是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能让我实现这个目标吗?
答案 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?