- 直系の既知のサブクラス:
AbstractPreferences
設定ノードは2つの個別のツリーで構成されます。一方はユーザー設定用、もう一方はシステム設定用です。 それぞれのユーザーは個々のユーザー設定ツリーを持ち、そのシステムのすべてのユーザーはシステム設計ツリーを持ちます。 ユーザー設定ツリーとシステム設定ツリーの定義は、実装ごとに異なります。 ユーザー設定ツリーには、フォント選択、カラー選択、特定のアプリケーションに設定したウィンドウ位置やサイズなどが格納されます。 システム設定ツリーには、アプリケーションのインストール構成データなどが格納されます。
設定ツリー内のノードには、階層ファイル・システムのディレクトリと同じ方法で名前が付けられます。 設定ツリーの各ノードには、ノード名 (一意である必要はない)、一意の絶対パス名、および各上位ノード(そのノード自体を含む)を起点とした相対パス名が割り当てられます。
ルート・ノードのノード名は、空の文字列("")です。 ほかのノードの名前は、作成時に任意に指定できます。 ノード名には任意の文字を使用できますが、空の文字列は指定できず、スラッシュ文字('/')は使用できません。
ルート・ノードの絶対パス名は、「/
」です。 ルート・ノードの子の絶対パス名は、「/
」+<ノード名>になります。 その他のノードの絶対パス名は、<親の絶対パス名>+「/
」+<ノード名>になります。 絶対パス名は、常にスラッシュ文字から始まります。
ノードnの相対パス名は、上位ノードaを起点とした場合、nの絶対パス名を作成するときにaの絶対パス名に追加される文字列になります。先頭にスラッシュ文字がある場合は削除します。 次の点に注意してください。
- 相対パス名はスラッシュ文字で始まらない。
- そのノード自体を起点とした相対パス名は空の文字列である。
- 親を起点とした各ノードの相対パス名は、そのノード名になる。ただし、ルート・ノードには親が存在しないため、ルート・ノードは除く。
- ルートを起点とした各ノードの相対パス名は、その絶対パス名から先頭のスラッシュ文字を削除したものになる。
次の点にも注意してください。
- パス名には連続する複数のスラッシュ文字を含めることはできない。
- ルートの絶対パス名を除き、パス名はスラッシュ文字で終わらない。
- 上記の2つのルールに準拠している文字列はすべて有効なパス名である。
設定データを変更するメソッドはすべて、非同期に実行できます。つまり、実行後はただちに復帰し、変更は実装に依存した遅延が経過してから永続バッキング・ストアに送られます。 flush
メソッドは、更新データをバッキング・ストアに強制的に書き込んで、同期をとるときに使用します。 Java仮想マシンが正常終了しても、保留中の更新は失われません。このため、終了時に明示的にflush
を呼び出して、保留中の更新を保持する必要はありません。
Preferences
オブジェクトから設定を読み込むときは、デフォルト値を指定してメソッドを呼び出す必要があります。 読み込む前に値が設定されていなかった場合またはバッキング・ストアが利用できない場合は、そのデフォルト値が返されます。 これは、バッキング・ストアが利用できなくなった場合でも、アプリケーションが動作できるようにするためです(ただし、機能がわずかに低下する)。 一部のメソッド(flush
など)のセマンティックスでは、バッキング・ストアが利用できない場合にアプリケーションが動作しなくなります。 通常のアプリケーションでは、これらのメソッドを呼び出す必要がありません。それらは、BackingStoreException
をスローするように宣言していることで識別できます。
このクラスのメソッドは、1つのJVMの複数のスレッドから並行して呼び出すことができます。このとき、外部的に同期化する必要はありません。実行結果は、逐次実行した場合と等価です。 このクラスが複数のJVMによって同時に使用され、設定データが同じバッキング・ストアに格納された場合、データ・ストアは破壊しませんが、設定データの一貫性は保証されません。
このクラスには、エクスポート/インポート機能があり、設定をXMLドキュメントに「エクスポート」したり、設定が記述されたXMLドキュメントをシステムに「インポート」することができます。 この機能は、設定ツリーのすべてまたは一部をバックアップし、そのバックアップを復元するときに使用します。
このXMLドキュメントでは、次のDOCTYPEが宣言されます。
<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
設定をエクスポート/インポートするときに、システムURI (http://java.sun.com/dtd/preferences.dtd)にはアクセスしません。システムURIは、DTDを一意に識別する文字列として使用されます。その内容は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<!-- DTD for a Preferences tree. -->
<!-- The preferences element is at the root of an XML document
representing a Preferences tree. -->
<!ELEMENT preferences (root)>
<!-- The preferences element contains an optional version attribute,
which specifies version of DTD. -->
<!ATTLIST preferences EXTERNAL_XML_VERSION CDATA "0.0" >
<!-- The root element has a map representing the root's preferences
(if any), and one node for each child of the root (if any). -->
<!ELEMENT root (map, node*) >
<!-- Additionally, the root contains a type attribute, which
specifies whether it's the system or user root. -->
<!ATTLIST root
type (system|user) #REQUIRED >
<!-- Each node has a map representing its preferences (if any),
and one node for each child (if any). -->
<!ELEMENT node (map, node*) >
<!-- Additionally, each node has a name attribute -->
<!ATTLIST node
name CDATA #REQUIRED >
<!-- A map represents the preferences stored at a node (if any). -->
<!ELEMENT map (entry*) >
<!-- An entry represents a single preference, which is simply
a key-value pair. -->
<!ELEMENT entry EMPTY >
<!ATTLIST entry
key CDATA #REQUIRED
value CDATA #REQUIRED >
各Preferences
実装には、PreferencesFactory
実装を関連付ける必要があります。 ルート設定ノードを生成するときにPreferencesFactory
実装を指定するには、Java(TM) SE実装にその方法を設定する必要があります。 これによって、管理者はデフォルトのpreferences実装を代替実装に置き換えることができます。 - 実装上のノート:
PreferencesFactory
実装は、次のように配置されています:システム・プロパティ
java.util.prefs.PreferencesFactory
が定義されている場合は、PreferencesFactory
インタフェースを実装するクラスの完全修飾名とみなされます。 その後、クラスがロードされ、インスタンスが作成されます。システム・クラス・ローダー
の認識するjarファイルにPreferencesFactory
実装クラス・ファイルがインストールされていて、このjarファイルにリソース・ディレクトリMETA-INF/services
内のjava.util.prefs.PreferencesFactory
というプロバイダ構成ファイルが含まれている場合、そのファイルに指定されている最初のクラス名が使用されます。 このようなjarファイルが2つ以上指定された場合は、最初に検出されたファイルが使用されます。 その後、クラスがロードされ、インスタンスが作成されます。最後に、前述のシステム・プロパティと拡張jarファイルのどちらも指定されていない場合は、そのとき使用されているプラットフォームに対してシステム・ワイドのデフォルトである
PreferencesFactory
実装がロードされ、インスタンスが作成されます。
- 導入されたバージョン:
- 1.4
-
フィールドのサマリー
修飾子と型フィールド説明static final int
キーとして使用できる文字列の最大長(80文字)です。static final int
ノード名の最大長(80文字)です。static final int
値として使用できる文字列の最大長(8192文字)です。 -
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明abstract String
この設定ノードの絶対パス名を返します。abstract void
指定されたリスナーがこのノードのノード変更イベントを受信するように登録します。abstract void
指定されたリスナーがこの設定ノードに対する設定変更イベントを受信するように登録します。abstract String[]
この設定ノードの子の名前(このノードを起点とした相対名)を返します。abstract void
clear()
この設定ノード内の設定(キーと値のペアの関連付け)をすべて削除します。abstract void
このノード(その下位ノードは含まない)に含まれているすべての設定を表すXMLドキュメントを、指定された出力ストリームに発行します。abstract void
このノードとそのすべての下位ノードに含まれるすべての設定を表すXMLドキュメントを発行します。abstract void
flush()
この設定ノードとその下位ノードの内容に対するすべての変更を、永続ストアに強制的に格納します。abstract String
この設定ノード内の指定されたキーに関連付けられている値を返します。abstract boolean
getBoolean
(String key, boolean def) この設定ノード内の指定されたキーに関連付けられている文字列が表すboolean値を返します。abstract byte[]
getByteArray
(String key, byte[] def) この設定ノード内の指定されたキーに関連付けられている文字列が表すbyte配列値を返します。abstract double
この設定ノード内の指定されたキーに関連付けられている文字列が表すdouble値を返します。abstract float
この設定ノード内の指定されたキーに関連付けられている文字列が表すfloat値を返します。abstract int
この設定ノード内の指定されたキーに関連付けられている文字列が表すint値を返します。abstract long
この設定ノード内の指定されたキーに関連付けられている文字列が表すlong値を返します。static void
XMLドキュメントによって表されるすべての設定を、指定された入力ストリームからインポートします。abstract boolean
この設定ノードがユーザー設定ツリーにある場合は、true
を返します。システム設定ツリーにある場合は、false
を返します。abstract String[]
keys()
この設定ノード内に関連付けられている値を持つキーをすべて返します。abstract String
name()
この設定ノードの名前(その親を起点とした相対名)を返します。abstract Preferences
このノードと同じツリーにある名前付き設定ノードを返します。このノードとその上位ノードが存在しない場合は、それらをすべて作成します。abstract boolean
nodeExists
(String pathName) 名前付き設定ノードがこのノードと同じツリーに存在する場合は、trueを返します。abstract Preferences
parent()
この設定ノードの親を返し、このノードがルートの場合はnull
を返します。abstract void
この設定ノードで指定されたキーに、指定された値を関連付けます。abstract void
putBoolean
(String key, boolean value) この設定ノード内の指定されたキーに、指定されたboolean値を表す文字列を関連付けます。abstract void
putByteArray
(String key, byte[] value) この設定ノード内の指定されたキーに、指定されたbyte配列を表す文字列を関連付けます。abstract void
この設定ノード内の指定されたキーに、指定されたdouble値を表す文字列を関連付けます。abstract void
この設定ノード内の指定されたキーに、指定されたfloat値を表す文字列を関連付けます。abstract void
この設定ノード内の指定されたキーに、指定されたint値を表す文字列を関連付けます。abstract void
この設定ノード内の指定されたキーに、指定されたlong値を表す文字列を関連付けます。abstract void
この設定ノード内の指定されたキーに関連付けられている値がある場合は、それを削除します。abstract void
この設定ノードとその下位ノードをすべて削除し、削除したノードに含まれている設定をすべて無効にします。abstract void
指定されたNodeChangeListener
を削除して、変更イベントの受信を停止します。abstract void
指定された設定変更リスナーを削除して、設定変更イベントの受信を停止します。abstract void
sync()
sync
を呼び出すと、最初に、VMから永続ストアに格納された変更がこの設定ノードとその下位ノードにすべて反映されます。static Preferences
systemNodeForPackage
(Class<?> c) システム設定ツリーから設定ノードを返します。このシステム設定ツリーは、規則に従って、指定されたクラスのパッケージに関連付けられています。static Preferences
システムのルート設定ノードを返します。abstract String
toString()
この設定ノードの文字列表現を、式によって計算されたかのように返します:(this.isUserNode() ? "User" : "System") + " Preference Node: " + this.absolutePath()
。static Preferences
userNodeForPackage
(Class<?> c) 呼出し側ユーザーの設定ツリーから設定ノードを返します。このユーザー設定ツリーは、規則に従って、指定されたクラスのパッケージに関連付けられています。static Preferences
userRoot()
呼出し側ユーザーのルート設定ノードを返します。
-
フィールド詳細
-
コンストラクタの詳細
-
Preferences
protected Preferences()唯一のコンストラクタです。 (サブクラスのコンストラクタによる呼出し用で、通常は暗黙的に呼び出されます。)
-
-
メソッドの詳細
-
userNodeForPackage
public static Preferences userNodeForPackage(Class<?> c) 呼出し側ユーザーの設定ツリーから設定ノードを返します。このユーザー設定ツリーは、規則に従って、指定されたクラスのパッケージに関連付けられています。 規則は次のとおりです。ノードの絶対パス名は、完全指定のパッケージ名で、スラッシュ('/'
)で始まり、ピリオド('.'
)はスラッシュに置き換えられます。 たとえば、com.acme.widget.Foo
クラスに関連付けられているノードの絶対パス名は、/com/acme/widget
となります。この規則は、名前なしのパッケージには適用されません。名前なしのパッケージに関連付けられている設定ノードは、
<unnamed>
になります。 このノードは、長期間の使用には適していませんが、パッケージにまだ属していない開発初期段階のプログラムや使い捨てのプログラムで使用できます。 重要なデータはこのノードに格納しないでください。それを使用するすべてのプログラムによって共有されているためです。Foo
クラスを使用して名前なしのパッケージに関する設定にアクセスするには、次の方法で設定ノードを取得します。static Preferences prefs = Preferences.userNodeForPackage(Foo.class);
このイディオムを使えば、文字列を使って設定ノードを記述する必要がなくなるため、実行時にエラーが発生する可能性が減ります。 (クラス名の綴りを間違った場合は通常、コンパイル時にエラーが発生する。)このメソッドを呼び出したときに、返されるノードとその上位ノードが存在しなかった場合は、それらのノードが作成されます。 返されるノードがこの呼出し以前に存在しなかった場合、この呼出しによって作成されたノードとその上位ノードは、返されるノード(あるいはその上位ノードまたは下位ノード)上で
flush
メソッドが呼び出されたときに、持続的になります。- パラメータ:
c
- ユーザー設定ノードを必要とするパッケージのクラス。- 戻り値:
c
がメンバーになっているパッケージに関連付けられているユーザー設定ノード。- 例外:
NullPointerException
-c
がnull
の場合。SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")
を拒否した場合。- 関連項目:
-
systemNodeForPackage
public static Preferences systemNodeForPackage(Class<?> c) システム設定ツリーから設定ノードを返します。このシステム設定ツリーは、規則に従って、指定されたクラスのパッケージに関連付けられています。 規則は次のとおりです。ノードの絶対パス名は、完全指定のパッケージ名で、スラッシュ('/'
)で始まり、ピリオド('.'
)はスラッシュに置き換えられます。 たとえば、com.acme.widget.Foo
クラスに関連付けられているノードの絶対パス名は、/com/acme/widget
となります。この規則は、名前なしのパッケージには適用されません。名前なしのパッケージに関連付けられている設定ノードは、
<unnamed>
になります。 このノードは、長期間の使用には適していませんが、パッケージにまだ属していない開発初期段階のプログラムや使い捨てのプログラムで使用できます。 重要なデータはこのノードに格納しないでください。それを使用するすべてのプログラムによって共有されているためです。Foo
クラスを使用して名前なしのパッケージに関する設定にアクセスするには、次の方法で設定ノードを取得します。static Preferences prefs = Preferences.systemNodeForPackage(Foo.class);
このイディオムを使えば、文字列を使って設定ノードを記述する必要がなくなるため、実行時にエラーが発生する可能性が減ります。 (クラス名の綴りを間違った場合は通常、コンパイル時にエラーが発生する。)このメソッドを呼び出したときに、返されるノードとその上位ノードが存在しなかった場合は、それらのノードが作成されます。 返されるノードがこの呼出し以前に存在しなかった場合、この呼出しによって作成されたノードとその上位ノードは、返されるノード(あるいはその上位ノードまたは下位ノード)上で
flush
メソッドが呼び出されたときに、持続的になります。- パラメータ:
c
- システム設定ノードを必要とするパッケージのクラス。- 戻り値:
c
がメンバーになっているパッケージに関連付けられているシステム設定ノード。- 例外:
NullPointerException
-c
がnull
の場合。SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")
を拒否した場合。- 関連項目:
-
userRoot
public static Preferences userRoot()呼出し側ユーザーのルート設定ノードを返します。- 戻り値:
- 呼出し側ユーザーのルート設定ノード。
- 例外:
SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")
を拒否した場合。- 関連項目:
-
systemRoot
public static Preferences systemRoot()システムのルート設定ノードを返します。- 戻り値:
- システムのルート設定ノード。
- 例外:
SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")
を拒否した場合。- 関連項目:
-
put
この設定ノードで指定されたキーに、指定された値を関連付けます。- パラメータ:
key
- 指定の値が関連付けられるキー。value
- 指定のキーに関連付けられる値。- 例外:
NullPointerException
- keyまたはvalueがnull
の場合。IllegalArgumentException
-key.length()
がMAX_KEY_LENGTH
を超える場合またはvalue.length
がMAX_VALUE_LENGTH
を超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。IllegalArgumentException
- キーまたは値のいずれかにnull制御文字が含まれている場合、コード・ポイントU+0000。
-
get
この設定ノード内の指定されたキーに関連付けられている値を返します。 キーに関連付けられている値がない場合またはバッキング・ストアが利用できない場合は、指定されたデフォルトを返します。一部の実装は、デフォルト値をそのバッキング・ストアに格納します。 指定されたキーに関連付けられている値がない場合でも、格納済みデフォルトがある場合は、指定されたデフォルトに優先して格納済みデフォルトが返されます。
- パラメータ:
key
- 関連付けられている値が返されるキー。def
- この設定ノードがkey
に関連付けられている値を持たない場合に返すべき値。- 戻り値:
key
に関連付けられている値。key
に関連付けられている値が存在しないか、バッキング・ストアにアクセスできない場合はdef
。- 例外:
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
-key
がnull
である場合。 (def
にはnull
値を指定できる。)IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。
-
remove
public abstract void remove(String key) この設定ノード内の指定されたキーに関連付けられている値がある場合は、それを削除します。この実装が格納済みデフォルトをサポートしており、指定された設定に格納済みデフォルトが存在する場合は、この呼出しにより格納済みデフォルトが使用されるようになります。つまり、後続の
get
呼出しでは格納済みデフォルトが返されます。- パラメータ:
key
- マッピングが設定ノードから削除されるキー。- 例外:
NullPointerException
-key
がnull
である場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。
-
clear
public abstract void clear() throws BackingStoreExceptionこの設定ノード内の設定(キーと値のペアの関連付け)をすべて削除します。 この呼出しは、このノードの下位ノードには適用されません。この実装が格納済みデフォルトをサポートしており、設定階層内のこのノードに格納済みデフォルトが含まれている場合は、この呼出しにより格納済みデフォルトが使用されるようになります。つまり、後続の
get
呼出しでは格納済みデフォルトが返されます。- 例外:
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
putInt
public abstract void putInt(String key, int value) この設定ノード内の指定されたキーに、指定されたint値を表す文字列を関連付けます。 関連付けられる文字列は、int値がInteger.toString(int)
に渡された場合に返される文字列です。 このメソッドは、getInt(java.lang.String, int)
と組み合わせて使用します。- パラメータ:
key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。- 例外:
NullPointerException
-key
がnull
である場合。IllegalArgumentException
-key.length()
がMAX_KEY_LENGTH
を超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
getInt
public abstract int getInt(String key, int def) この設定ノード内の指定されたキーに関連付けられている文字列が表すint値を返します。 この文字列は、Integer.parseInt(String)
によって整数に変換されます。 キーに関連付けられている値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が渡されたときにInteger.parseInt(String)
がNumberFormatException
をスローした場合は、指定されたデフォルトを返します。 このメソッドは、putInt(java.lang.String, int)
と組み合わせて使用します。この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、
Integer.parseInt
によってintに変換できる場合は、指定されたデフォルトに優先してこのintが返されます。- パラメータ:
key
- 関連付けられている値がintとして返されるキー。def
- この設定ノードがkey
に関連付けられている値を持たないか、関連付けられている値をintとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。- 戻り値:
- この設定ノード内の
key
に関連付けられている文字列が表すint値。関連付けられている値が存在しないか、その値をintとして解釈できない場合はdef
。 - 例外:
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
-key
がnull
である場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
putLong
public abstract void putLong(String key, long value) この設定ノード内の指定されたキーに、指定されたlong値を表す文字列を関連付けます。 関連付けられる文字列は、long値がLong.toString(long)
に渡された場合に返される文字列です。 このメソッドは、getLong(java.lang.String, long)
と組み合わせて使用します。- パラメータ:
key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。- 例外:
NullPointerException
-key
がnull
である場合。IllegalArgumentException
-key.length()
がMAX_KEY_LENGTH
を超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
getLong
public abstract long getLong(String key, long def) この設定ノード内の指定されたキーに関連付けられている文字列が表すlong値を返します。 この文字列は、Long.parseLong(String)
によってlongに変換されます。 キーに関連付けられている値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が渡されたときにLong.parseLong(String)
がNumberFormatException
をスローした場合は、指定されたデフォルトを返します。 このメソッドは、putLong(java.lang.String, long)
と組み合わせて使用します。この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、
Long.parseLon
によってlongに変換できる場合は、指定されたデフォルトに優先してこのlongが返されます。- パラメータ:
key
- 関連付けられている値がlongとして返されるキー。def
- この設定ノードがkey
に関連付けられている値を持たないか、関連付けられている値をlongとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。- 戻り値:
- この設定ノード内の
key
に関連付けられている文字列が表すlong値。関連付けられている値が存在しないか、その値をlongとして解釈できない場合はdef
。 - 例外:
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
-key
がnull
である場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
putBoolean
public abstract void putBoolean(String key, boolean value) この設定ノード内の指定されたキーに、指定されたboolean値を表す文字列を関連付けます。 関連付けられる文字列は、この値がtrueである場合は「true
」、falseである場合は「false
」となります。 このメソッドは、getBoolean(java.lang.String, boolean)
と組み合わせて使用します。- パラメータ:
key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。- 例外:
NullPointerException
-key
がnull
である場合。IllegalArgumentException
-key.length()
がMAX_KEY_LENGTH
を超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
getBoolean
public abstract boolean getBoolean(String key, boolean def) この設定ノード内の指定されたキーに関連付けられている文字列が表すboolean値を返します。 有効な文字列は、trueを表す「true
」とfalseを表す「false
」です。 大文字と小文字は区別されないため、「TRUE
」と「False
」も有効です。 このメソッドは、putBoolean(java.lang.String, boolean)
と組み合わせて使用します。キーに関連付けられる値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が「
true
」または「false
」(大文字と小文字は区別されない)以外である場合は、指定されたデフォルトを返します。この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、格納済みデフォルトが「
true
」または「false
」(大文字と小文字は区別されない)である場合は、指定されたデフォルトに優先して使用されます。そうでない場合は、指定されたデフォルトが使用されます。- パラメータ:
key
- 関連付けられている値がbooleanとして返されるキー。def
- この設定ノードがkey
に関連付けられている値を持たないか、関連付けられている値をbooleanとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。- 戻り値:
- この設定ノード内の
key
に関連付けられている文字列が表すboolean値。関連付けられている値が存在しないか、その値をbooleanとして解釈できない場合はdef
。 - 例外:
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
-key
がnull
である場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
putFloat
public abstract void putFloat(String key, float value) この設定ノード内の指定されたキーに、指定されたfloat値を表す文字列を関連付けます。 関連付けられる文字列は、float値がFloat.toString(float)
に渡された場合に返される文字列です。 このメソッドは、getFloat(java.lang.String, float)
と組み合わせて使用します。- パラメータ:
key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。- 例外:
NullPointerException
-key
がnull
である場合。IllegalArgumentException
-key.length()
がMAX_KEY_LENGTH
を超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
getFloat
public abstract float getFloat(String key, float def) この設定ノード内の指定されたキーに関連付けられている文字列が表すfloat値を返します。 この文字列は、Float.parseFloat(String)
によって整数に変換されます。 キーに関連付けられている値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が渡されたときにFloat.parseFloat(String)
がNumberFormatException
をスローした場合は、指定されたデフォルトを返します。 このメソッドは、putFloat(java.lang.String, float)
と組み合わせて使用します。この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、
Float.parseFloat
によってfloatに変換できる場合は、指定されたデフォルトに優先してこのfloatが返されます。- パラメータ:
key
- 関連付けられている値がfloatとして返されるキー。def
- この設定ノードがkey
に関連付けられている値を持たないか、関連付けられている値をfloatとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。- 戻り値:
- この設定ノード内の
key
に関連付けられている文字列が表すfloat値。関連付けられている値が存在しないか、その値をfloatとして解釈できない場合はdef
。 - 例外:
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
-key
がnull
である場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
putDouble
public abstract void putDouble(String key, double value) この設定ノード内の指定されたキーに、指定されたdouble値を表す文字列を関連付けます。 関連付けられる文字列は、double値がDouble.toString(double)
に渡された場合に返される文字列です。 このメソッドは、getDouble(java.lang.String, double)
と組み合わせて使用します。- パラメータ:
key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。- 例外:
NullPointerException
-key
がnull
である場合。IllegalArgumentException
-key.length()
がMAX_KEY_LENGTH
を超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
getDouble
public abstract double getDouble(String key, double def) この設定ノード内の指定されたキーに関連付けられている文字列が表すdouble値を返します。 この文字列は、Double.parseDouble(String)
によって整数に変換されます。 キーに関連付けられている値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が渡されたときにDouble.parseDouble(String)
がNumberFormatException
をスローした場合は、指定されたデフォルトを返します。 このメソッドは、putDouble(java.lang.String, double)
と組み合わせて使用します。この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、
Double.parseDouble
によってdoubleに変換できる場合は、指定されたデフォルトに優先してこのdoubleが返されます。- パラメータ:
key
- 関連付けられている値がdoubleとして返されるキー。def
- この設定ノードがkey
に関連付けられている値を持たないか、関連付けられている値をdoubleとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。- 戻り値:
- この設定ノード内の
key
に関連付けられている文字列が表すdouble値。関連付けられている値が存在しないか、その値をdoubleとして解釈できない場合はdef
。 - 例外:
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
-key
がnull
である場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
putByteArray
public abstract void putByteArray(String key, byte[] value) この設定ノード内の指定されたキーに、指定されたbyte配列を表す文字列を関連付けます。 関連付ける文字列は、Base64でエンコードされたバイト配列です。これについては、RFC 2045のセクション6.8に定義されていますが、小さな変更があり、この文字列はBase64 Alphabetの文字だけで構成され、改行文字が含まれません。 また、Base64でエンコードされた文字列がMAX_VALUE_LENGTH
を超えないように、バイト配列の最大長がMAX_VALUE_LENGTH
の4分の3に制限されています。 このメソッドは、getByteArray(java.lang.String, byte[])
と組み合わせて使用します。- パラメータ:
key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。- 例外:
NullPointerException
- keyまたはvalueがnull
の場合。IllegalArgumentException
- key.length()がMAX_KEY_LENGTHを超える場合、またはvalue.lengthがMAX_VALUE_LENGTH*3/4を超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
getByteArray
public abstract byte[] getByteArray(String key, byte[] def) この設定ノード内の指定されたキーに関連付けられている文字列が表すbyte配列値を返します。 有効な文字列は、Base64でエンコードされたバイナリデータです。これについては、RFC 2045のセクション6.8に定義されていますが、小さな変更があり、この文字列はBase64 Alphabetの文字だけで構成され、改行文字や不適切な文字は許可されません。 このメソッドは、putByteArray(java.lang.String, byte[])
と組み合わせて使用します。キーに関連付けられる値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値がBase64でエンコードされた有効なbyte配列(上の定義を参照)でない場合は、指定されたデフォルトを返します。
この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、格納済みデフォルトがBase64でエンコードされた有効なbyte配列(上記の定義どおり)である場合は、指定されたデフォルトに優先して使用されます。そうでない場合は、指定されたデフォルトが使用されます。
- パラメータ:
key
- 関連付けられている値がbyte配列として返されるキー。def
- この設定ノードがkey
に関連付けられている値を持たないか、関連付けられている値をバイト配列として解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。- 戻り値:
- この設定ノード内の
key
に関連付けられている文字列が表すbyte配列値。関連付けられている値が存在しないか、その値をbyte配列として解釈できない場合はdef
。 - 例外:
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
-key
がnull
である場合。 (def
にはnull
値を指定できる。)IllegalArgumentException
- keyにnull制御文字が含まれている場合、コード・ポイントU+0000。- 関連項目:
-
keys
public abstract String[] keys() throws BackingStoreExceptionこの設定ノード内に関連付けられている値を持つキーをすべて返します。 このノードに設定がない場合、返される配列のサイズはゼロになります。この実装が格納済みデフォルトをサポートし、このノードに格納済みデフォルトがあり、明示的な設定によってオーバーライドされていない場合は、明示的な設定と格納済みデフォルトが配列に返されます。
- 戻り値:
- この設定ノード内に関連付けられている値を持つキーの配列。
- 例外:
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。
-
childrenNames
public abstract String[] childrenNames() throws BackingStoreExceptionこの設定ノードの子の名前(このノードを起点とした相対名)を返します。 このノードに子がない場合、返される配列のサイズはゼロになります。- 戻り値:
- この設定ノードの子の名前。
- 例外:
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。
-
parent
public abstract Preferences parent()この設定ノードの親を返し、このノードがルートの場合はnull
を返します。- 戻り値:
- この設定ノードの親。
- 例外:
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。
-
node
public abstract Preferences node(String pathName) このノードと同じツリーにある名前付き設定ノードを返します。このノードとその上位ノードが存在しない場合は、それらをすべて作成します。 相対パス名または絶対パス名を受け入れます。 相対パス名(スラッシュ文字('/')
で始まらないパス名)は、この設定ノードを起点として解釈されます。返されるノードがこの呼出し以前に存在しなかった場合、この呼出しによって作成されたノードとその上位ノードは、返されるノード(あるいはその上位ノードまたは下位ノード)上で
flush
メソッドが呼び出されたときに、持続的になります。- パラメータ:
pathName
- 返される設定ノードのパス名。- 戻り値:
- 指定された設定ノード。
- 例外:
IllegalArgumentException
- パス名が無効である場合(つまり、パス名に連続した複数のスラッシュ文字が含まれているか、パス名がスラッシュ文字で終わっていてその長さが2文字以上の場合)。NullPointerException
- パス名がnull
である場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
nodeExists
public abstract boolean nodeExists(String pathName) throws BackingStoreException 名前付き設定ノードがこのノードと同じツリーに存在する場合は、trueを返します。 相対パス名(スラッシュ文字('/')
で始まらないパス名)は、この設定ノードを起点として解釈されます。このノード(または上位ノード)が
removeNode()
メソッドによってすでに削除されている場合は、パス名が「」のときにだけこのメソッドの呼出しが正当になり、
false
を返します。 つまり、イディオムp.nodeExists("")
は、p
が削除されているかどうかをテストする場合に使用できます。- パラメータ:
pathName
- 存在が確認されるノードのパス名。- 戻り値:
- 指定されたノードが存在する場合にtrue。
- 例外:
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalArgumentException
- パス名が無効である場合(つまり、パス名に連続した複数のスラッシュ文字が含まれているか、パス名がスラッシュ文字で終わっていてその長さが2文字以上の場合)。NullPointerException
- パス名がnull
である場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されており、pathName
が空の文字列(「」)でない場合。
-
removeNode
public abstract void removeNode() throws BackingStoreExceptionこの設定ノードとその下位ノードをすべて削除し、削除したノードに含まれている設定をすべて無効にします。 ノードが削除されると、対応するPreferences
インスタンスに対しname()
、absolutePath()
、isUserNode()
、flush()
、またはnodeExists("")
以外のすべてのメソッドを試みると、IllegalStateException
で失敗します。Object
に定義されたメソッドは、ノードが削除されたあとでも呼び出すことができ、IllegalStateException
はスローされません。この削除は、このノード(または上位ノード)上で
flush
メソッドを呼び出したときに、永続的になります。この実装が格納済みデフォルトをサポートしている場合は、ノードを削除すると、このノードまたはその下位ノードに格納済みデフォルトが使用されます。 つまり、それ以降にこのノードのパス名上で
nodeExists
を呼び出すと、true
が返されます。また、node
を呼び出すと、設定または子、あるいはその両方の空でないコレクションを表す(別の)Preferences
インスタンスが返されます。- 例外:
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによってすでに削除されている場合。UnsupportedOperationException
- このメソッドがルート・ノード上で呼び出された場合。- 関連項目:
-
name
public abstract String name()この設定ノードの名前(その親を起点とした相対名)を返します。- 戻り値:
- この設定ノードの名前(その親を起点とした相対名)。
-
absolutePath
public abstract String absolutePath()この設定ノードの絶対パス名を返します。- 戻り値:
- この設定ノードの絶対パス名。
-
isUserNode
public abstract boolean isUserNode()この設定ノードがユーザー設定ツリーにある場合は、true
を返します。システム設定ツリーにある場合は、false
を返します。- 戻り値:
- この設定ノードがユーザー設定ツリーにある場合は、
true
を返します。システム設定ツリーにある場合は、false
を返します。
-
toString
public abstract String toString()この設定ノードの文字列表現を、式によって計算されたかのように返します:(this.isUserNode() ? "User" : "System") + " Preference Node: " + this.absolutePath()
。 -
flush
public abstract void flush() throws BackingStoreExceptionこの設定ノードとその下位ノードの内容に対するすべての変更を、永続ストアに強制的に格納します。 このメソッドが正常に復帰した場合は、このメソッドが呼び出される前に、このノードをルートとするサブツリーにすべての変更が適用されています。この実装を使用すれば、任意のタイミングで永続ストアに変更をフラッシュできます。 このメソッドが呼び出されるまで待機する必要はありません。
新しく作成されたノードでフラッシュが発生すると、そのノードが永続的になり、まだ永続的になっていない上位ノード(および下位ノード)も永続的になります。 ただし、上位ノードに対する設定値の変更は、永続的になりません。
このメソッドを、
removeNode()
メソッドを使用して削除されたノード上で呼び出すと、flushSpi()がこのノード上で呼び出されますが、ほかのノードでは呼び出されません。- 例外:
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。- 関連項目:
-
sync
public abstract void sync() throws BackingStoreExceptionsync
を呼び出すと、最初に、VMから永続ストアに格納された変更がこの設定ノードとその下位ノードにすべて反映されます。 つまり、この設定ノードとその下位ノードの内容に対する変更がすべて強制的に永続ストアに格納され、この設定ノード上でflush
メソッドを呼び出した場合と同じ効果が発生します。- 例外:
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
addPreferenceChangeListener
public abstract void addPreferenceChangeListener(PreferenceChangeListener pcl) 指定されたリスナーがこの設定ノードに対する設定変更イベントを受信するように登録します。 設定変更イベントは、設定がこのノードに追加されたとき、設定がこのノードから削除されたとき、または設定に関連付けられている値が変更されたときに生成されます。 (設定変更イベントは、removeNode()
メソッドでは生成されません。このメソッドでは、ノード変更イベントが生成されます。 設定変更イベントはclear
メソッドによって生成されます。ノード変更イベントは、登録されたリスナーと同じJVM内で変更が行われたときにだけ、生成されます。ただし、一部の実装では、現在のJVMの外部で行われた変更に対して、イベントが生成されることがあります。 イベントが生成された時点で、変更が永続的になっていないことがあります。 現在のノードの下位ノードで設定が変更されたときは、イベントは生成されません。そのようなイベントが必要な場合は、そのノードを登録する必要があります。
- パラメータ:
pcl
- 追加する設定変更リスナー。- 例外:
NullPointerException
-pcl
がnullである場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
removePreferenceChangeListener
public abstract void removePreferenceChangeListener(PreferenceChangeListener pcl) 指定された設定変更リスナーを削除して、設定変更イベントの受信を停止します。- パラメータ:
pcl
- 削除する設定変更リスナー。- 例外:
IllegalArgumentException
-pcl
がこのノード上で登録された設定変更リスナーではなかった場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
addNodeChangeListener
public abstract void addNodeChangeListener(NodeChangeListener ncl) 指定されたリスナーがこのノードのノード変更イベントを受信するように登録します。 ノード変更イベントは、子ノードがこのノードに追加されたとき、またはこのノードから削除されたときに生成されます。 (1回のremoveNode()
呼出しによって、複数のノード変更イベントが、削除されたノードをルートとするサブツリー内の各ノードに1つずつ生成されます。)ノード変更イベントは、登録されたリスナーと同じJVM内で変更が行われたときにだけ、生成されます。ただし、一部の実装では、現在のJVMの外部で行われた変更に対して、イベントが生成されることがあります。 イベントが生成された時点で、変更が持続的になっていないことがあります。 現在のノードの配下にない下位ノードが追加または削除されたときは、イベントは生成されません。そのようなイベントが必要な場合は、そのノードを登録する必要があります。
作成されたノードは、ただちに有効になりません。 これらのノードは、アクセスされたときに暗黙的に作成されます。このため、アクセスされる前に、子ノードがバッキング・ストアに存在するかどうかを実装が判断できない場合があります(たとえば、バッキング・ストアが到達不能な場合や、キャッシュされた情報が最新でない場合など)。 このような状況でのノード変更イベントの生成は、特に定義されていません。
- パラメータ:
ncl
- 追加するNodeChangeListener
。- 例外:
NullPointerException
-ncl
がnullである場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
removeNodeChangeListener
public abstract void removeNodeChangeListener(NodeChangeListener ncl) 指定されたNodeChangeListener
を削除して、変更イベントの受信を停止します。- パラメータ:
ncl
- 削除するNodeChangeListener
。- 例外:
IllegalArgumentException
-ncl
がこのノード上で登録されたNodeChangeListener
ではなかった場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
exportNode
public abstract void exportNode(OutputStream os) throws IOException, BackingStoreException このノード(その下位ノードは含まない)に含まれているすべての設定を表すXMLドキュメントを、指定された出力ストリームに発行します。 このXMLドキュメントは、このノードのオフライン・バックアップにもなります。このXMLドキュメントでは、次のDOCTYPEが宣言されます。
UTF-8文字エンコーディングが使用されます。<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
このメソッドは通常のルールと異なり、このクラスの複数のメソッドを並行して実行すると、逐次実行した場合と同じ結果が生成されます。 このメソッドの1回の呼出しでこのノードの設定が並行して変更された場合、エクスポートされた設定がこのノードに含まれる設定と一致していないことがあります。つまり、並行して行われた変更は、エクスポートされたデータに反映されていないことがあります。
- パラメータ:
os
- XMLドキュメントの発行先の出力ストリーム- 例外:
IOException
- 指定された出力ストリームへの書込み時にIOException
が発生した場合。BackingStoreException
- 設定データがバッキング・ストアから読み取れない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
exportSubtree
public abstract void exportSubtree(OutputStream os) throws IOException, BackingStoreException このノードとそのすべての下位ノードに含まれるすべての設定を表すXMLドキュメントを発行します。 このXMLドキュメントは、このノードをルートとするサブツリーのオフライン・バックアップにもなります。このXMLドキュメントでは、次のDOCTYPEが宣言されます。
UTF-8文字エンコーディングが使用されます。<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
このメソッドは通常のルールと異なり、このクラスの複数のメソッドを並行して実行すると、逐次実行した場合と同じ結果が生成されます。 このメソッドの1回の呼出しでこのノードをルートとするサブツリーの設定またはノードが並行して変更された場合、エクスポートされた設定がサブツリーと一致していないことがあります。つまり、並行して行われた変更は、エクスポートされたデータに反映されていないことがあります。
- パラメータ:
os
- XMLドキュメントの発行先の出力ストリーム- 例外:
IOException
- 指定された出力ストリームへの書込み時にIOException
が発生した場合。BackingStoreException
- 設定データがバッキング・ストアから読み取れない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。- 関連項目:
-
importPreferences
public static void importPreferences(InputStream is) throws IOException, InvalidPreferencesFormatException XMLドキュメントによって表されるすべての設定を、指定された入力ストリームからインポートします。 このドキュメントは、ユーザー設定またはシステム設定を表しています。 ユーザー設定を表している場合は、呼び出したユーザーの設定ツリーに設定がインポートされます。別のユーザー設定ツリーのドキュメントをインポートしてもかまいません。 このドキュメントに記述されている設定の設定ノードが存在しない場合は、そのノードが作成されます。XMLドキュメントには、次のDOCTYPE宣言が必要です。
このメソッドは、<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
exportNode(OutputStream)
およびexportSubtree(OutputStream)
と組み合わせて使用するように設計されています。このメソッドは通常のルールと異なり、このクラスの複数のメソッドを並行して実行すると、逐次実行した場合と同じ結果が生成されます。 このメソッドを実行すると、このクラスのほかのpublicメソッド(
node(String)
、put(String, String)
など)をオーバーライドして実装した場合と同じ結果が生成されます。- パラメータ:
is
- XMLドキュメントの読込み元の入力ストリーム。- 例外:
IOException
- 指定された入力ストリームからの読込み時にIOException
が発生した場合。InvalidPreferencesFormatException
- 入力ストリーム上のデータが、要求されたドキュメント型を持つ有効なXMLドキュメントにならない場合。SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")
を拒否した場合。- 関連項目:
-