對標題沒太確定,但是我有一個用於檢索某些紋理座標的文件。該文件稱爲資產,只是包含了一些像下面是什麼項目?Java:使用字符串進行靜態訪問?
public static TextureRegion level1;
要訪問此我只是用Assets.level1的程序和多數民衆的另一部分。
什麼我不知道是否有一種方法通過一個字符串來做到這一點,例如不是Assets.level2我可以做類似的資產。(串),其中字符串=「級別2」
任何幫助將是巨大的
對標題沒太確定,但是我有一個用於檢索某些紋理座標的文件。該文件稱爲資產,只是包含了一些像下面是什麼項目?Java:使用字符串進行靜態訪問?
public static TextureRegion level1;
要訪問此我只是用Assets.level1的程序和多數民衆的另一部分。
什麼我不知道是否有一種方法通過一個字符串來做到這一點,例如不是Assets.level2我可以做類似的資產。(串),其中字符串=「級別2」
任何幫助將是巨大的
而不必在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);
}
這樣做的好處是,這些地區可能會在運行時(可能是從一個文件中加載)而不是被硬編碼來確定。
您可以通過使用Java反射API訪問基於變量的類的靜態字段。
TextureRegion lvl = (TextureRegion) Assets.class.getDeclaredField("level1").get(null);
您可能可以在該特定場景中使用getter或reflection。 HashMake你的TextureRegions到地圖中的字符串鍵?一個鍵的字符串,一個值的TextureRegion? – Rig
不在Java中。你可以在Groovy和其他語言 – Blundell