2009-09-11 3 views

Répondre

27

Vous pouvez regarder la configuration Apache,

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

Parmi les nombreuses fonctionnalités qu'il supporte est le Variable Interpolation.

+3

C'est tout! name = Martin myKey = salut $ {nom}! String result = new PropriétésConfiguration ("myFile.properties"). GetString ("myKey"); ====> la valeur de "résultat" est "salut Martin!" –

12

Qu'est-ce que vous voulez faire est impossible en utilisant Java Properties class.

Les clés de propriété et les valeurs sont simplement des chaînes. Aucun traitement ne leur arrive, donc vous ne pouvez pas faire référence à une autre valeur dans une valeur.

+0

bizarre. En utilisant ANT, vous pouvez le faire. Quoi de neuf avec Java? –

+3

ANT n'a rien à voir avec les propriétés Java. Ma compréhension (limitée) des choses sous-le-capot dans ANT est qu'il est analysé. Les fichiers de propriétés Java sont simplement des fichiers texte contenant des clés String et des valeurs String pouvant être chargées en mémoire. –

+0

Cela faisait un moment que je regardais la source mais je pense que la fourmi utilise org.apache.commons.configuration pour son analyse de propriété. Ne me citez pas là-dessus. – seth

1

Les fichiers Ant sont des scripts; Les fichiers de propriétés sont des ensembles de chaînes.

L'objectif principal des fichiers de propriétés est de servir de conteneurs de chaînes pour le texte traduisible. Les chaînes de format généralement utilisées dans les regroupements de ressources utilisent un système basé sur un index. Lorsque la chaîne est traduite, l'ordre des paramètres peut être modifié dans les versions traduites de la chaîne sans avoir besoin de modifier le code 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)); 

Sortie:

Hello, Martin! 
Martin, Hello! 

Pour les cas d'utilisation comme celui-ci, il ne serait pas logique d'encapsuler la fonctionnalité dans la classe des propriétés parce que les chaînes ont généralement besoin de données de l'application. La classe MessageFormat peut être utilisée pour effectuer la substitution.

Ce type de mise en forme ne doit pas être confondu avec les autres options de formatage spécifiées par Formatter:

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