如何从资源文件创建自动生成的枚举?

时间:2012-09-07 17:37:04

标签: java resources auto-generate

我想创建一个类似于Android的自动生成的资源文件。我知道如何解析和创建文件,并基本上创建一个新的类文件。我不知道该怎么做才开始这个自动生成过程。

所以,使用eclipse(虽然如果有一种方法可以以不可知的方式实现这一点,我更喜欢它),如何触发自动生成会话来读取属性文件并创建一个.java文件保存静态变量和这个解析文件中的“键”,然后我可以从我的代码中引用它?

2 个答案:

答案 0 :(得分:2)

有关如何生成java源文件have already been provided的一些示例。读取属性文件并调用其中一个API应该相对容易。

要触发代码生成过程,您需要添加自定义构建步骤。使用Ant,只需add a custom task。然后将其连接到Eclipse Builder:项目属性 - >建设者 - >新。

随后,Eclipse应该自行查找并刷新此文件。如果没有,请检查您的配置:首选项 - >一般 - >工作区 - >找到“使用本机挂钩或轮询刷新”和类似的并检查它们。 (请注意,我不能100%确定最后一部分是否有效。)

阻力最小的路径是单独运行此构建步骤。如果您的属性文件不经常更改,那么它应该不是那么大的交易。这与你使用Protocol Buffers,JAXB,wsdl2java等时所做的类似。如果你想让一切都像R.java一样神奇地工作,那么你可能需要做一些更复杂的事情:

- 尝试使用Eclipse Builder选项来控制何时执行Ant任务   - 如果你无法解决这个问题,那么我将查看Eclipse如何连接上述项目(即Protocol Buffers,JAXB,wsdl2java等)。   - 查看ADT自定义PreCompilerBuilder类   - 查看build-helper-plugin

答案 1 :(得分:0)

通常使用ResourceBundle创建一个允许您按键查找属性的对象。您可以在Java Trail上了解ResourceBundle

基本思路是您有一个.properties扩展名的文本文件。您将ResourceBundle对象指向该文件。然后,您可以使用getString()getObject()方法将密钥传递到所需的属性。这就是它的全部。您只需在启动程序时(或在需要之前的某个时间)加载ResourceBundle

如果您创建自己的类ResourceBundle作为成员值,则可以使用这样的简单代码来使用简单的get()方法来获取属性值:

    public String get(String aString)
    {        
    String sVal = null;

    try
    {
        sVal = (String)myProperties.getObject(aString);
    }
    catch (MissingResourceException e)
    {
        log.debug("Missing Property Value: "+aString);
    }

    return sVal;
    }

我希望这很有用。