2009-09-11 11 views

Respuesta

27

Es posible que desee mirar de configuración de Apache,

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

Entre muchas características que soporta es la Variable Interpolation.

+3

Eso es todo! name = Martin myKey = ¡hola $ {nombre}! String result = new PropertiesConfiguration ("myFile.properties"). GetString ("myKey"); ====> el valor de "resultado" es "¡hola Martin!" –

12

Lo que se quiere hacer es imposible usar el Java Properties class.

Las claves de propiedad y los valores son simplemente cadenas. No les ocurre ningún procesamiento, por lo que no puede referirse a otro valor en un valor.

+0

raro. Usando ANT puedes hacer esto. ¿Qué pasa con Java? –

+3

ANT no tiene nada que ver con las propiedades de Java. Mi comprensión (limitada) de las cosas bajo el capó en ANT es que está analizada. Los archivos de propiedades de Java son simplemente archivos de texto que contienen claves de cadena y valores de cadena que se pueden cargar en la memoria. –

+0

Ha pasado un tiempo desde que miré la fuente, pero creo que la hormiga usa org.apache.commons.configuration para analizar sus propiedades. No me cites sobre eso. – seth

1

Los archivos Ant son scripts; los archivos de propiedades son cubos de cadenas.

El propósito principal de los archivos de propiedades es servir como contenedores de cadena para texto traducible. Las cadenas de formato utilizadas normalmente en paquetes de recursos utilizan un sistema basado en índices. Cuando se traduce la cadena, el orden de los parámetros se puede cambiar en las versiones traducidas de la cadena sin necesidad de cambiar el código de 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)); 

Salida:

Hello, Martin! 
Martin, Hello! 

Para los casos de uso de este tipo, no tendría sentido para encapsular la funcionalidad de la clase Properties porque las cuerdas por lo general necesitan datos de la aplicación. La clase MessageFormat se puede usar para realizar la sustitución.

Este tipo de formato no se debe confundir con las otras opciones de formato según lo especificado por Formatter:

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