2009-09-11 9 views

Odpowiedz

27

Czasami warto spojrzeć na Konfiguracja Apache,

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

Wśród wielu funkcji obsługiwanych jest Variable Interpolation.

+3

To wszystko! nazwa = Martin myKey = hi $ {nazwa}! Wynik ciągu = nowy PropertiesConfiguration ("myFile.properties"). GetString ("myKey"); ====> wartością "wyniku" jest "cześć Martin!" –

12

Co chcesz zrobić, to niemożliwe przy użyciu Java Properties class.

Klucze i wartości właściwości są po prostu ciągami. Nie dzieje się z nimi przetwarzanie, więc nie można odwoływać się do innej wartości w wartości.

+0

dziwne. Używając ANT, możesz to zrobić. Co słychać w Javie? –

+3

ANT nie ma nic wspólnego z właściwościami Javy. Moje (ograniczone) zrozumienie ukrytych rzeczy w ANT jest takie, że jest on parsowany. Pliki Java Properties są po prostu plikami tekstowymi, które zawierają klucze String i wartości String, które można załadować do pamięci. –

+0

Minęło trochę czasu, odkąd spojrzałem na źródło, ale myślę, że mrówka używa org.apache.commons.configuration do jej analizy właściwości. Nie cytuj mnie na ten temat. – seth

1

Pliki Ant to skrypty; pliki właściwości to wiadra ciągów.

Głównym celem plików właściwości jest wyświetlanie kontenerów tekstowych do przetłumaczenia tekstu. Łańcuchy formatów zwykle używane w pakunkach zasobów używają systemu opartego na indeksach. Po przetłumaczeniu łańcucha kolejność parametrów może zostać zmieniona w przetłumaczonych wersjach łańcucha bez potrzeby zmiany kodu 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)); 

wyjściowa:

Hello, Martin! 
Martin, Hello! 

Dla przypadków użycia, jak to, że nie ma sensu do enkapsulacji funkcjonalności w klasie właściwości, gdyż ciągi zwykle potrzebują danych z aplikacji. Do przeprowadzenia podstawienia można użyć klasy MessageFormat.

Ten typ formatowania nie należy mylić z innych opcji formatowania w określonych przez Formatter:

System.out.format("%s, %s!%n", what, who); 
Powiązane problemy