モジュール java.base
パッケージ java.util

クラスProperties

java.lang.Object
すべての実装されたインタフェース:
Serializable, Cloneable, Map<Object,Object>
直系の既知のサブクラス:
Provider

public class Properties extends Hashtable<Object,Object>
Propertiesクラスは、プロパティの永続セットを表します。 Propertiesを、ストリームへ保管したり、ストリームからロードしたりできます。 プロパティ・リストの各キー、およびそれに対応する値は文字列です。

プロパティ・リストには、その「デフォルト値」として別のプロパティ・リストを含めることができます。元のプロパティ・リストでプロパティ・キーが見つからない場合は、この2番目のプロパティ・リストが検索されます。

PropertiesHashtableを継承するので、Propertiesオブジェクトに対してputメソッドおよびputAllメソッドを適用できます。 しかし、これらのメソッドを使用することは推奨されません。これらのメソッドを使うと、呼出し側はキーまたは値がStringsではないエントリを挿入できるからです。 setPropertyメソッドを代わりに使用してください。 String以外のキーまたは値を格納する「安全性の低い」Propertiesオブジェクトでstoreメソッドまたはsaveメソッドが呼び出されると、その呼出しは失敗します。 同様に、String以外のキーを格納する「安全性の低い」PropertiesオブジェクトでpropertyNamesまたはlistメソッドが呼び出されると、その呼出しは失敗します。

このクラスの"コレクション・ビュー" (つまり、entrySet()keySet()およびvalues()です)のiteratorメソッドによって戻されるイテレータは、(ハッシュテーブルの実装とは異なり)にフェイル・ファストできない場合があります。 これらのイテレータは、構築時に1回のみ存在したとおりに要素をトラバースすることが保証され、(しかし、保証されない)は、構築後に行われた変更を反映する場合があります。

load(Reader) / store(Writer, String)メソッドは、次に指定する単純な行指向の形式で、文字ベースのストリームとの間でプロパティをロードおよび格納します。 load(InputStream) / store(OutputStream, String)メソッドはload(Reader)/store(Writer, String)ペアと同じように動作しますが、入力/出力ストリームはISO 8859-1文字エンコーディングでエンコードされます。 このエンコーディングで直接表現できない文字は、「Java言語仕様」のセクション3.3で定義されているUnicodeエスケープを使用して書き込むことができます。エスケープ・シーケンスで使用できるのは、単一の'u'文字のみです。

loadFromXML(InputStream)およびstoreToXML(OutputStream, String, String)メソッドは、プロパティを単純なXML形式としてロードおよび格納できます。 デフォルトではUTF-8文字エンコーディングが使用されますが、必要に応じてエンコーディングを指定できます。 実装はUTF-8とUTF-16をサポートする必要があり、その他のエンコーディングもサポートできます。 XMLプロパティ・ドキュメントでは、次のDOCTYPE宣言が使用されます。

 <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
 
プロパティをエクスポート/インポートするときに、システムURI (http://java.sun.com/dtd/properties.dtd)にはアクセスしません。システムURIは、DTDを一意に識別する文字列として使用されます。その内容は次のとおりです。
    <?xml version="1.0" encoding="UTF-8"?>

    <!-- DTD for properties -->

    <!ELEMENT properties ( comment?, entry* ) >

    <!ATTLIST properties version CDATA #FIXED "1.0">

    <!ELEMENT comment (#PCDATA) >

    <!ELEMENT entry (#PCDATA) >

    <!ATTLIST entry key CDATA #REQUIRED>
 

このクラスはスレッド・セーフです: 外部同期を必要とせずに、複数のスレッドで単一のPropertiesオブジェクトを共有できます。

APIのノート:
Propertiesクラスは、そのスーパークラスHashtableから負荷係数の概念を継承しません。
導入されたバージョン:
1.0
関連項目: