Klasse java.util.prefs.Preferences | 1.4 |
java.lang.Object | +--java.util.prefs.Preferences
Einstellungen werden durch die Java-Laufzeitumgebung auf einen Speicherungsmechanismus innerhalb des verwendeten Betriebssystems abgebildet. So werden Einstellungen auf Windows in der Windows-Registrierung, auf Unix in Dateien abgelegt. Der voreingestellte Speicherungsmechanismus kann durch einen Eigenen ersetzt werden, der z. B. auf eine Datenbank oder einen Verzeichnisdienst zur Speicherung zurückgreift.Die Knoten sind in einer Hierarchie angeordnet und besitzen einen Namen, sowie keinen bis Schlüssel-Wert-Paare. In letzteren werden die eigentlichen Einstellungs-Daten gespeichert. Die Hierarchie, in der die Knoten angeordnet sind, bilden lediglich den Kontext ab, dem die gespeicherten Einstellungen zugeordnet sind. In der voreingestellten Implementierung werden alle Werte intern als Zeichenketten gespeichert. Es existieren jedoch auch Methoden, die zum Setzen von numerischen und binären Daten benutzt werden können. Diese Methoden führen intern eine entsprechende Konvertierung der Daten in Zeichenketten durch.Innerhalb der Hierarchie wird ein Einstellungs-Knoten eindeutig durch seinen Pfad identifiziert. Der Pfad besteht aus den Namen der Knoten, die durch einen Schrägstrich getrennt werden. Der Schrägstrich alleine stellt den Pfad zum Wurzel-Knoten der Hierarchie dar.Alle Methoden, die auf Einstellungen lesen bzw. schreiben lösen eine BackingStoreException, wenn der zugrundeliegende Speicherungs-Mechanismus aktuell nicht verfügbar ist.Einstellungen können über eine XML-basierte Export-/Import-Schnittstelle zwischen verschiedenen Speicherungsmechanismen auszutauschen.
Datenelemente | |
---|---|
public final static int | MAX_KEY_LENGTH |
public final static int | MAX_NAME_LENGTH |
public final static int | MAX_VALUE_LENGTH |
Konstruktoren | |
---|---|
protected | Preferences() |
Methoden | |
---|---|
public abstract String | absolutePath() |
public abstract void | addNodeChangeListener(NodeChangeListener ncl) |
public abstract void | addPreferenceChangeListener(PreferenceChangeListener pcl) |
public abstract String[] | childrenNames() |
public abstract void | clear() |
public abstract void | exportNode(OutputStream os) |
public abstract void | exportSubtree(OutputStream os) |
public abstract void | flush() |
public abstract String | get(String key, String def) |
public abstract boolean | getBoolean(String key, boolean def) |
public abstract byte[] | getByteArray(String key, byte[] def) |
public abstract double | getDouble(String key, double def) |
public abstract float | getFloat(String key, float def) |
public abstract int | getInt(String key, int def) |
public abstract long | getLong(String key, long def) |
public static void | importPreferences(InputStream is) |
public abstract boolean | isUserNode() |
public abstract String[] | keys() |
public abstract String | name() |
public abstract Preferences | node(String pathName) |
public abstract boolean | nodeExists(String pathName) |
public abstract Preferences | parent() |
public abstract void | put(String key, String value) |
public abstract void | putBoolean(String key, boolean value) |
public abstract void | putByteArray(String key, byte[] value) |
public abstract void | putDouble(String key, double value) |
public abstract void | putFloat(String key, float value) |
public abstract void | putInt(String key, int value) |
public abstract void | putLong(String key, long value) |
public abstract void | remove(String key) |
public abstract void | removeNode() |
public abstract void | removeNodeChangeListener(NodeChangeListener ncl) |
public abstract void | removePreferenceChangeListener(PreferenceChangeListener pcl) |
public abstract void | sync() |
public static Preferences | systemNodeForPackage(Class c) |
public static Preferences | systemRoot() |
public abstract String | toString() |
public static Preferences | userNodeForPackage(Class c) |
public static Preferences | userRoot() |
Die Persistenz von neu erstellten Knoten ist erst nach dem Aufruf von flush() sichergestellt.
Alle Einstellungen werden intern als Zeichenketten abgelegt. Die Methoden zur Speicherung typisierter Daten führen intern eine Konvertierung in eine Zeichenkette durch und verwenden meist diese Methode zur tatsächlichen Speicherung.
Bei der Verwendung dieser Methode ist darauf zu achten, dass die codierte Form des Byte-Arrays in der Länge nicht den Wert übersteigt, der in MAX_VALUE_LENGTH definiert ist.
Erst nach dem Aufruf von flush() wird sichergestellt, dass der Löschvorgang über Persistenz-Mechanismus festgeschrieben wurde.Nach dem Entfernen eines Knotens wird der Default-Zustand vor dem Einfügen an der Stelle in der Einstellung-Hierarchie wieder hergestellt.
Befindet sich die übergebene Klasse um unbenannten Package, so wird der Einstellung-Knoten mit dem Namen /<unnamed> zurückgeliefert. In diesem Knoten sollte allerdings nur temporär benutzt werden, um die Funktionalität einer Anwendung zu testen.Folgende Beispiele zeigen, wie man auf über diese Methode auf einen Einstellung-Knoten zugreift. Innerhalb einer Klasse kann man folgende Technik benutzen:Preferences prefs = Preferences.systemNodeForPackage(getClass());Für den statischen Zugriff empfielt sich die Verwendung der folgenden Technik:static Preferences prefs = Preferences.systemNodeForPackage(MyClass.class);Die Methode wandelt intern zunächst die übergebene Klasse in den Namen eines Einstellung-Knoten um und ruft danach den Knoten mit dem ermittelten Namen über die Methode systemRoot().node() ab. Dadurch wird der Knoten erzeugt, falls er vor dem Aufruf noch nicht existiert.
isUserNode() ? "User" : "System") + " Preference Node: " + this.absolutePath()
Befindet sich die übergebene Klasse um unbenannten Package, so wird der Einstellung-Knoten mit dem Namen /<unnamed> zurückgeliefert. In diesem Knoten sollte allerdings nur temporär benutzt werden, um die Funktionalität einer Anwendung zu testen.Folgende Beispiele zeigen, wie man auf über diese Methode auf einen Einstellung-Knoten zugreift. Innerhalb einer Klasse kann man folgende Technik benutzen:Preferences prefs = Preferences.userNodeForPackage(getClass());Für den statischen Zugriff empfielt sich die Verwendung der folgenden Technik:static Preferences prefs = Preferences.userNodeForPackage(MyClass.class);Die Methode wandelt intern zunächst die übergebene Klasse in den Namen eines Einstellung-Knoten um und ruft danach den Knoten mit dem ermittelten Namen über die Methode userRoot().node() ab. Dadurch wird der Knoten erzeugt, falls er vor dem Aufruf noch nicht existiert.