从属性文件生成代码

Generate code from properties file

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

AFAIK,相当于 Java 中的 RESX 文件是 Properties 文件。我可以使用 ResourceBundle.getBundle("filename").getString("resourcename"); 访问资源。可以看到,文件名和资源名都是strings and

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

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

您可以使用 jlibs library. see tutorial Internationalization made easier。顺便说一句,我是这个项目的所有者;

该库提供编译时安全性,并在编译时使用注解生成java代码

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

要查看如何直接从 XML 架构生成 类 的示例,请阅读: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 格式(编组)。

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

使用步骤如下:

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