在运行时识别类

时间:2014-02-16 11:16:04

标签: java android libgdx

我正在使用libGDX框架在Android项目中工作,其中我展示了使用三个图形库的一些示例。一旦启动,应用程序必须显示一个菜单,其中包含每个样本的链接,标题和一些描述。目前,我正在手动创建所有内容,为每个样本声明一个新链接,但由于我将有大量样本,并且我将在每个应用程序版本中添加新内容,我想识别它们并生成一个新条目自动。

样本部分由名为Sample的抽象类和从Sample扩展的每个样本的类组成。我怎么能做到这一点?必要条件是有可能在运行时识别所有样本并获取有关它们的信息(名称,描述等),而无需先前创建实例。

我的实际选项是使用Annotations(不知道是否可能或者我是否需要外部库来在运行时搜索此注释)或使用类似JSON文件的内容。您认为解决此问题的最佳方式是什么(我当然愿意采用其他解决方案)?

1 个答案:

答案 0 :(得分:1)

我建议使用XML并将您要创建的类作为Tag创建,如下所示:

<root>
     <sampleimplement1 name ="sampleimplement1" descript="sample1 description" ..... more attributes here... />
     <sampleimplement2 name ="sampleimplement2" descript="sample2 description" ..... more attributes here... />
     <sampleimplement3 name ="sampleimplement3" descript="sample3 description" ..... more attributes here... />
</root>

现在可以使用libgdx的XmlReader解析为Element。所以元素不是根。 最后但并非最不重要的是,您可以遍历root的子项,并检查标记的名称。根据名称,您可以创建Sample的其他实现。

XmlReader r = new XmlReader();
Element e = r.parse(xml);//<--- the XML as string also possible as file
for (int i = 0; i < e.getChildCount(); i++)
    {
        Element child = e.getChild(i);
        switch(child.getName()){
            case "sampleimplement1":
            //create sample1
            break;
....
....
    }