Can I reference another property in a properties file (use ${property})

JavaPropertiesParametersInclude

Java Problem Overview


> Possible Duplicate:
> How to reference another property in java.util.Properties?

look at my "file.properties":

key1= My name is
key2= ${key1} Martin !

Why when I get the value of "key2" my result is "${key1} Martin !" unlike "My name is Martin !"

=> I program in Java 6
=> I use java.util.Properties

Java Solutions


Solution 1 - Java

You might want look at Apache Configuration,

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

Among many features it supports is the Variable Interpolation.

Solution 2 - Java

What you want to do is impossible using the Java Properties class.

Property keys and values are simply Strings. No processing happens to them, so you can't refer to another value in a value.

Solution 3 - Java

Ant files are scripts; properties files are buckets of strings.

The primary purpose of properties files is to serve as string containers for translatable text. The format strings typically used in resource bundles use an index-based system. When the string is translated, the order of the parameters can be changed in translated versions of the string without needing to change the Java code.

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

Output:

Hello, Martin!
Martin, Hello!

For use cases like this, it would not make sense to encapsulate the functionality in the Properties class because the strings usually need data from the application. The MessageFormat class can be used to perform the substitution.

This type of formatting should not be confused with the other formatting options as specified by Formatter:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMartin MagakianView Question on Stackoverflow
Solution 1 - JavaZZ CoderView Answer on Stackoverflow
Solution 2 - JavaThomas OwensView Answer on Stackoverflow
Solution 3 - JavaMcDowellView Answer on Stackoverflow