2011-07-26 30 views
1

對標題沒太確定,但是我有一個用於檢索某些紋理座標的文件。該文件稱爲資產,只是包含了一些像下面是什麼項目?Java:使用字符串進行靜態訪問?

public static TextureRegion level1; 

要訪問此我​​只是用Assets.level1的程序和多數民衆的另一部分。

什麼我不知道是否有一種方法通過一個字符串來做到這一點,例如不是Assets.level2我可以做類似的資產。(串),其中字符串=「級別2」

任何幫助將是巨大的

+2

您可能可以在該特定場景中使用getter或reflection。 HashMake你的TextureRegions到地圖中的字符串鍵?一個鍵的字符串,一個值的TextureRegion? – Rig

+0

不在Java中。你可以在Groovy和其他語言 – Blundell

回答

2

(TextureRegion)Assets.class.getField("level2").get(null)

+0

這很好運行,它只是拋出了很多異常,需要圍繞try catch – Chris

4

而不必在Assets類的靜態字段,你應該添加一個靜態方法來Assets

public static TextureRegion getTextureRegion(String name) 
{ 
    // get it somehow 
} 

現在,對於「莫名其妙」的一部分:最簡單的(也是最靈活)的方式會b如果在包含紋理區域的Assets類中有一個Map<String, TextureRegion>Map是一個界面,HashMap在這種情況下可能就足夠了)。您如何在該地圖中放置數據取決於您。例如:

regions.put("level1", your_level_1_region); 

然後,你getTextureRegion變爲:

public static TextureRegion getTextureRegion(String name) 
{ 
    return regions.get(name); 
} 

這樣做的好處是,這些地區可能會在運行時(可能是從一個文件中加載)而不是被硬編碼來確定。

0

您可以通過使用Java反射API訪問基於變量的類的靜態字段。

TextureRegion lvl = (TextureRegion) Assets.class.getDeclaredField("level1").get(null);