从属性文件生成代码
Generate code from properties file
来自 C# 背景,我习惯于在 Visual Studio 中创建资源文件 Resources.resx
。这会在后台生成一个 class,我可以通过 Resources.ResourceName
访问资源,这有一些好处
- 它提供自动完成("Intellisense")
- 如果重命名资源(而不是运行时错误),它会生成编译器错误
- 我可以使用 "Find usages" 来检查在哪里再次使用了相同的资源
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,其中包含资源包中所有条目的常量。
使用步骤如下:
- 您维护一个 Excel 文件,第一列包含资源键,下一列是目标语言的翻译。这样的Excel可以很容易的交给译者
- 只要您更改了这个 Excel 文件,您就会 运行 ResBundleCompiler(一个简单的命令行工具)。编译器读取 excel 文件并为每种语言生成一个 ResourceBundle 属性文件,并为每个资源键
定义常量 class
- 在您的应用程序中,您使用常量而不是文字字符串来引用资源键,从而提供您描述的所有优点。
来自 C# 背景,我习惯于在 Visual Studio 中创建资源文件 Resources.resx
。这会在后台生成一个 class,我可以通过 Resources.ResourceName
访问资源,这有一些好处
- 它提供自动完成("Intellisense")
- 如果重命名资源(而不是运行时错误),它会生成编译器错误
- 我可以使用 "Find usages" 来检查在哪里再次使用了相同的资源
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,其中包含资源包中所有条目的常量。
使用步骤如下:
- 您维护一个 Excel 文件,第一列包含资源键,下一列是目标语言的翻译。这样的Excel可以很容易的交给译者
- 只要您更改了这个 Excel 文件,您就会 运行 ResBundleCompiler(一个简单的命令行工具)。编译器读取 excel 文件并为每种语言生成一个 ResourceBundle 属性文件,并为每个资源键 定义常量 class
- 在您的应用程序中,您使用常量而不是文字字符串来引用资源键,从而提供您描述的所有优点。