2014-03-25 263 views
0

是否可以使用字符串作为属性名称来设置对象的属性?我很新的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

你应该使用一个地图,其中关键的是图像的名字和值是你的图像对象。 – NeplatnyUdaj

+0

向我们展示你的数组是如何声明的,以及数组元素的类。对象通过方法访问。 –

+0

如果我理解正确,您想要将包含图像名称的字符串数组转换为Image实例数组(图像是由createImageFromUrl()返回的对象类型,您未显示该图像)。没问题,但你显然需要两个数组:一个字符串数组不能包含Image的实例。不要试图在Java中应用JS习语。他们是完全不同的语言。 Java是关于字符串类型,类,封装(没有公共字段),多态。 JS是关于松散类型的动态数据结构。 –

回答

0

你可能会谈论一些不同的事情。你是否正在讨论设置类中定义的变量的值?如果是这样,你可能能够使用反射一起破解一些东西,但它并不像Java中那样是Java中的“噱头”。

您也可以考虑使用属性的HashMap作为它们的值,或者像你说的那样,Properties对象(它几乎就是一个Map本身)。

+0

OP正在讨论存储在指定索引处的值的对象 –

+0

因此我明白这一点。我的答案如果OP在Java中查找确切的功能,他不会找到它,但他可以使用Map或Properties实例做类似的事情。 –

相关问题