我可以在属性文件中引用另一个属性吗(使用 $property)[重复]

Posted

技术标签:

【中文标题】我可以在属性文件中引用另一个属性吗(使用 $property)[重复]【英文标题】:Can I reference another property in a properties file (use $property) [duplicate]我可以在属性文件中引用另一个属性吗(使用 $property)[重复] 【发布时间】:2010-11-27 13:58:01 【问题描述】:

可能重复:How to reference another property in java.util.Properties?

看看我的“file.properties”:

key1= My name is
key2= $key1 Martin !

为什么当我得到“key2”的值时,我的结果是“$key1 Martin !”不像“我叫马丁!”

=> 我用 Java 6 编程 => 我使用 java.util.Properties

【问题讨论】:

【参考方案1】:

您可能需要查看 Apache 配置,

http://commons.apache.org/configuration/

它支持的众多功能包括Variable Interpolation。

【讨论】:

就是这样!名称=马丁 myKey=hi $name !字符串结果 = new PropertiesConfiguration("myFile.properties").getString("myKey"); ====> "result" 的值是 "hi Martin !"【参考方案2】:

使用 Java Properties class 是不可能的。

属性键和值只是字符串。它们不会发生任何处理,因此您不能在值中引用另一个值。

【讨论】:

很奇怪。使用 ANT,您可以做到这一点。 Java 怎么了? ANT 与 Java 属性无关。我对 ANT 底层内容的(有限)理解是它已被解析。 Java 属性文件只是包含可以加载到内存中的字符串键和字符串值的文本文件。 自从我查看源代码以来已经有一段时间了,但我认为 ant 使用 org.apache.commons.configuration 进行属性解析。不要引用我的话。 “Java 怎么了?”我想你的意思是 java.util.Properties 是怎么回事,答案是它不做属性扩展,也没有声称。 似乎应该如此。但听起来像使用 ANT 之类的 Apache 配置会更好。【参考方案3】:

Ant 文件是脚本;属性文件是字符串的桶。

属性文件的主要目的是充当可翻译文本的字符串容器。资源包中通常使用的格式字符串使用基于索引的系统。当字符串被翻译时,参数的顺序可以在字符串的翻译版本中改变,而不需要改变Java代码。

String what = "Hello";
String who = "Martin";
System.out.println(MessageFormat.format("0, 1!", what, who));
System.out.println(MessageFormat.format("1, 0!", what, who));

输出:

Hello, Martin!
Martin, Hello!

对于这样的用例,将功能封装在 Properties 类中是没有意义的,因为字符串通常需要来自应用程序的数据。 MessageFormat 类可用于执行替换。

这种格式不应与Formatter指定的其他格式选项混淆:

System.out.format("%s, %s!%n", what, who);

【讨论】:

以上是关于我可以在属性文件中引用另一个属性吗(使用 $property)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

我可以在部分类中定义属性,然后用另一个部分类中的属性标记它们吗?

我可以使用属性使 .net 模拟另一个用户吗?

使用外部文件中的模型填充 Mongoose 模式属性

CSS 伪元素:使用 attr 来引用另一个元素的属性

我可以使用 FFmpeg 为视频流设置旋转字段吗?

我可以在查看器中引用外部数据库作为模型的属性吗?