[英]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.