从属性文件生成代码

时间:2015-07-16 06:35:17

标签: java c# eclipse resourcebundle

来自C#背景,我曾经在Visual Studio中创建资源文件Resources.resx。这会在后台生成一个类,我可以通过Resources.ResourceName访问资源,这有一些好处

  • 它提供自动完成功能("智能感知")
  • 如果重命名资源(而不是运行时错误),它会生成编译器错误
  • 我可以使用"查找用法"检查再次使用相同资源的位置

AFAIK,相当于Java中的 RESX 文件,是属性文件。我可以使用ResourceBundle.getBundle("filename").getString("resourcename");访问资源。如您所见,文件名和资源名称是字符串和

  • 我没有自动完成
  • 我得到运行时错误而不是编译器错误
  • 我需要进行通用文本搜索以找到其他不太可靠的用法

我强烈怀疑我是第一个想要生成代码的所有额外好处的人,所以

如何从Eclipse中的属性文件生成类并像在C#中一样使用它?

3 个答案:

答案 0 :(得分:1)

您可以使用jlibs库。请参阅教程Internationalization made easier。顺便说一下,我是这个项目的所有者;

这个库提供编译时安全性,并在编译时使用注释来生成Java代码

答案 1 :(得分:1)

Civilian框架包含一个generator tool来管理资源包并生成一个包含资源包中所有条目的常量的类。

使用它的步骤如下:

  1. 您维护一个Excel文件,第一列包含资源键,下一列包含目标语言的翻译。这样的Excel可以很容易地给译员。
  2. 每当您更改此Excel文件时,都会运行ResBundleCompiler(一个简单的命令行工具)。编译器读取excel文件并为每种语言生成ResourceBundle属性文件,并为每个资源键定义常量的类
  3. 在您的应用程序中,您使用常量而不是文字字符串来引用资源键,从而获得您所描述的所有优势。

答案 2 :(得分:0)

您需要使用的是XML格式,然后在JDK中使用JAXB来创建强类型对象。具体来看javax.xml.bind.JAXB

要查看如何直接从XML Schema生成类的示例,请阅读:http://www.javaworld.com/article/2071784/enterprise-java/java-xml-mapping-made-easy-with-jaxb-2-0.html

JAXB绑定编译器允许您从给定的XML模式生成Java类。 JAXB绑定编译器将XML模式转换为与XML模式中描述的结构匹配的Java类集合。这些类使用特殊的JAXB注释进行注释,这些注释为运行时框架提供了处理相应XML文档所需的映射。

绑定运行时框架为解组(或读取)和编组(或编写)XML文档提供了一种高效且易于使用的机制。它允许您将XML文档转换为Java对象的层次结构(解组),或者反过来将Java对象层次结构转换为XML格式(编组)。

相关问题