繁体   English   中英

Java:使用字符串进行静态访问?

[英]Java: Static access using a string?

不太确定标题,但我有一个用于检索某些纹理坐标的文件。 该文件称为Assets,仅包含一堆项目,如下所示...

public static TextureRegion level1;

要访问此文件,我只需要在程序的另一部分使用Assets.level1即可。

我想知道的是,是否可以通过字符串来执行此操作,例如代替Assets.level2,我可以执行类似Assets。(string)的操作,其中string =“ level2”

任何帮助都会很棒

而不是在那些为静态字段的Assets类,你应该添加一个静态方法来Assets

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

现在,对于“某种程度上”的部分:最简单(也是最灵活)的方法是在包含以下内容的Assets类中具有Map<String, TextureRegion>Map是接口,在这种情况下, HashMap可能就足够了)。纹理区域。 您如何将数据放入该地图取决于您自己。 例如:

regions.put("level1", your_level_1_region);

然后,您的getTextureRegion变为:

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

这样做的好处是可以在运行时确定这些区域(也许从文件中加载),而不用对其进行硬编码。

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

您可以使用Java Reflection API访问基于变量的类的静态字段。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM