2014-03-25 254 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實例做類似的事情。 –

相關問題