我可以在属性文件中引用另一个属性(使用$ {property})

时间:2009-09-11 17:02:03

标签: java properties parameters include

  

可能重复:
  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

3 个答案:

答案 0 :(得分:29)

您可能需要查看Apache配置,

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

它支持的许多功能都是Variable Interpolation

答案 1 :(得分:14)

使用Java Properties class无法实现您的目标。

属性键和值只是字符串。它们没有处理,因此您无法引用值中的其他值。

答案 2 :(得分:1)

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);