Klassen Properties

Properties är en enkel klass för att lagra par av String-objekt. Klassen fungerar som ett lexikon dvs man kan använda den första strängen i paret som nyckel och få reda på vad den andra strängen innehåller.

Exempel: Koden

Properties addresses = new Properties(); addresses.setProperty("Lisa", "Bullerbyn"); addresses.setProperty("Arthur", "Guildford"); addresses.setProperty("Ford", "Betelgeuse"); System.out.println("Ford comes from " + addresses.getProperty("Ford")); System.out.println("Contents of addresses: " + addresses);

producerar följande två rader:

Ford comes from Betelgeuse Contents of addresses: {Ford=Betelgeuse, Lisa=Bullerbyn, Arthur=Guildford}

Klassen ligger i paketet java.util och bör alltså importeras.

Mycket användbart är att det går att fylla Properties-objektet från en fil med metoden load.

Exempel: I stället för att använda setProperty som i exemplet ovan kan man man göra

Properties addresses = new Properties(); addresses.load(new FileReader("addresses.txt));

(java.io.* måste importeras och IOException

Om filen addresses.txt t ex innehåller raderna

Lisa : Bullerbyn Arthur : Guildford Ford : Belelgeuse

kommer satserna

System.out.println("Ford comes from " + addresses.getProperty("Ford")); System.out.println("Contents of addresses: " + addresses);
producera samma utskrifter som i första exemplet.

Klassen ger ett enkelt sätt att låta ett program läsa indata som t ex parametrar till en simulering från en fil. Eftersom värden är String-objekt så måste parametar som är tal tolkas. Det kan göras genom att koppla ett Scanner-objekt till värdesträngen eller med parse-metoderna i omslagsklasserna (typisk Integer eller Double).

Exempel: Antag att filen parameters.txt innehåller raderna

   number : 10
   x : 0.1
   y : 1e10
  
Om vi antar att x och y är deklarerade som double och number är deklarerad som int så kan dessa värden sättas av koden

Properties params = new Properties(); params.load(new FileReader("parameters.txt")); x = Double.parseDouble(params.getProperty("x")); y = Double.parseDouble(params.getProperty("y")); number = Integer.parseInt(params.getProperty("number")))

(Anmärkning: parse-metoderna i omslagsklasserna är tillåter inga blanktecken i strängen. Metoden load tar bort alla blanka före texten men inte efter texten. Se alltså till att det inte ligger blanktecken eller annat efter värdet på raderna i filen!)

Observera att det inte spelar någon roll i vilken ordning raderna i filen kommer eller i vilken ordning man frågar efter de olika egenskaperna.

På det här sättet kan man alltså köra ett program med olika uppsättningar av parametrar utan att behöva ändra och kompilera om koden. Man kan ändra i parameterfilen eller ha flera filer med olika parameteruppsättningar.

Andra möjligheter som klassen har är att ha defaultvärden på egenskaperna samt spara egenskaperna på en fil. Se javadokumentationen!


Tillbaka


Valid CSS!