JavaTM Platform
Standard Ed. 6

javax.naming
クラス CompoundName

java.lang.Object
  上位を拡張 javax.naming.CompoundName
すべての実装されたインタフェース:
Serializable, Cloneable, Comparable<Object>, Name

public class CompoundName
extends Object
implements Name

このクラスは複合名を表します。 複合名とは、階層名前空間から取得される名前です。複合名の各コンポーネントは、不可分な名前です。

複合名のコンポーネントには、番号が付けられます。N コンポーネントの複合名のインデックス範囲は、0 から N 未満の範囲で番号が付けられます。 この範囲は、[0,N] と表されます。もっとも重要なコンポーネントは、インデックス 0 にあります。 空の複合名にはコンポーネントはありません。

複合名の構文

複合名の構文は、プロパティーのセットによって指定されます。
jndi.syntax.direction
構文解析の方向 (right_to_left、left_to_right、flat)。指定しない場合のデフォルトは、flat です。これは、名前空間が階層構造のない平坦であることを示します。
jndi.syntax.separator
基本名のコンポーネントの区切り文字。方向が flat 以外の場合に必要です。
jndi.syntax.ignorecase
このプロパティーが存在する場合、true は、名前のコンポーネントを比較するときに大文字と小文字が区別されないことを示します。値が true ではない、またはプロパティーが存在しない場合は、名前のコンポーネントを比較するときに大文字と小文字が区別されます。
jndi.syntax.escape
このプロパティーが存在する場合は、区切り文字、エスケープ、および引用符をオーバーライドするエスケープ文字列が指定されます。
jndi.syntax.beginquote
このプロパティーが存在する場合は、引用された文字列の始まりを区切る文字列が指定されます。
jndi.syntax.endquote
引用された文字列の終わりを区切る文字列。このプロパティーが存在する場合は、引用された文字列の終わりを区切る文字列が指定されます。このプロパティーが存在しない場合は、終了引用符として syntax.beginquote が使用されます。
jndi.syntax.beginquote2
開始/終了引用符のセットの代替
jndi.syntax.endquote2
開始/終了引用符のセットの代替
jndi.syntax.trimblanks
このプロパティーが存在する場合、true は、比較のために名前のコンポーネントの先頭と末尾の空白が切り取られることを示します。値が true ではない、またはこのプロパティーが存在しない場合は、空白が重要になります。
jndi.syntax.separator.ava
このプロパティーが存在する場合は、複数の属性または値のペアを指定するときに、属性宣言値を区切る文字列が指定されます (age=65,gender=male の 「,」など)。
jndi.syntax.separator.typeval
このプロパティーが存在する場合は、属性と値を区切る文字列が指定されます (「age=65」の「=」など)。
上記のプロパティーは、次の規則に従って解釈されます。
  1. 引用符またはエスケープのない文字列では、区切り文字のインスタンスによって 2 つの基本名が区切られます。各基本名は、「コンポーネント」と呼ばれます。
  2. 直前に (左側に) エスケープがある場合、区切り文字、引用符、またはエスケープはエスケープされます。
  3. 引用符のセットが 2 つある場合は、特定の開始引用符と、対応する終了引用符が一致している必要があります。
  4. コンポーネントに先行する、エスケープされていない開始引用符は、コンポーネントの末尾にある、エスケープされていない終了引用符と一致している必要があります。このように引用されたコンポーネントは、「引用されたコンポーネント」と呼ばれます。開始引用符と終了引用符を削除し、また次のリストに示す引用されたコンポーネントに関連する規則の 1 つが適用されない場合、中間の文字を通常の文字とみなすことで、引用されたコンポーネントは構文解析されます。
  5. 引用されていないコンポーネントに埋め込まれた引用符は、通常の文字列とみなされ、一致している必要はありません。
  6. エスケープされる、またはエスケープされていない引用符の間に表示される区切り文字は、区切り文字ではなく通常の文字とみなされます。
  7. 引用されたコンポーネント内のエスケープ文字列は、その後ろに対応する終了引用符文字列がある場合のみ、エスケープとして機能します。これは、引用されたコンポーネントにエスケープされた引用符を埋め込むために使用されます。
  8. エスケープされたエスケープ文字列は、エスケープ文字列とはみなされません。
  9. 前にメタ文字列 (引用符または区切り文字) がなく、コンポーネントの最後にないエスケープ文字列は、通常の文字列とみなされます。
  10. 先行する区切り文字 (区切り文字で始まる複合名の文字列) は、先行する空の基本コンポーネント (空の文字列で構成される) を表します。末尾の区切り文字 (区切り文字で終わる複合名の文字列) は、末尾の空の基本コンポーネントを表します。隣接する区切り文字は、空の基本コンポーネントを表します。

複合名の文字列形式は、上記の構文に従います。複合名のコンポーネントが文字列表記に変換される場合は、上記の予約された構文規則が適用されます (埋め込まれた区切り文字はエスケープまたは引用されるなど)。 そのため、同じ文字列が構文解析される場合、元の複合名と同じコンポーネントが作成されます。

マルチスレッドアクセス

CompoundName インスタンスは、並行マルチスレッドアクセスに対しては同期化されません。複数のスレッドから CompoundName にアクセスして変更する場合は、オブジェクトをロックする必要があります。

導入されたバージョン:
1.3
関連項目:
直列化された形式

フィールドの概要
protected  javax.naming.NameImpl impl
          この複合名の実装です。
protected  Properties mySyntax
          この複合名の構文プロパティーです。
 
コンストラクタの概要
protected CompoundName(Enumeration<String> comps, Properties syntax)
          comps に指定されたコンポーネントと syntax を使用して、新しい複合名インスタンスを構築します。
  CompoundName(String n, Properties syntax)
          指定した構文プロパティーで指定される構文を使用して、文字列 n を構文解析することで、新しい複合名インスタンスを構築します。
 
メソッドの概要
 Name add(int posn, String comp)
          単一のコンポーネントを、この複合名の指定した位置に追加します。
 Name add(String comp)
          単一のコンポーネントをこの複合名の最後に追加します。
 Name addAll(int posn, Name n)
          複合名のコンポーネントを、この複合名の指定した位置に順に追加します。
 Name addAll(Name suffix)
          複合名のコンポーネントを、この複合名の末尾に順に追加します。
 Object clone()
          この複合名のコピーを作成します。
 int compareTo(Object obj)
          CompoundName と、指定された Object の順序を比較します。
 boolean endsWith(Name n)
          複合名がこの複合名の接尾辞であるかどうかが判定されます。
 boolean equals(Object obj)
          obj がこの複合名と構文的に等しいかを判定します。
 String get(int posn)
          この複合名のコンポーネントを取得します。
 Enumeration<String> getAll()
          この複合名のコンポーネントを、文字列の列挙として取得します。
 Name getPrefix(int posn)
          コンポーネントがこの複合名のコンポーネントの接頭辞で構成される複合名を作成します。
 Name getSuffix(int posn)
          コンポーネントがこの複合名のコンポーネントの接尾辞で構成される複合名を作成します。
 int hashCode()
          この複合名のハッシュコードを計算します。
 boolean isEmpty()
          この複合名が空かどうかを判定します。
 Object remove(int posn)
          この複合名からコンポーネントを削除します。
 int size()
          この複合名のコンポーネント数を取得します。
 boolean startsWith(Name n)
          複合名がこの複合名の接頭辞であるかどうかが判定されます。
 String toString()
          複合名の構文規則を使用する、この複合名の文字列表記を生成します。
 
クラス java.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

impl

protected transient javax.naming.NameImpl impl
この複合名の実装です。このフィールドはコンストラクタによって初期化され、null にすることはできません。このフィールドはサブクラスによって読み込み専用変数とみなされる必要があります。


mySyntax

protected transient Properties mySyntax
この複合名の構文プロパティーです。このフィールドはコンストラクタによって初期化され、null にすることはできません。このフィールドはサブクラスによって読み込み専用変数とみなされる必要があります。mySyntax を変更する場合は、コンストラクタ内で変更し、複合名がインスタンス化されたあとで変更しないでください。

コンストラクタの詳細

CompoundName

protected CompoundName(Enumeration<String> comps,
                       Properties syntax)
comps に指定されたコンポーネントと syntax を使用して、新しい複合名インスタンスを構築します。この protected メソッドは、clone()、getPrefix()、getSuffix() などのメソッドをオーバーライドするときに、CompoundName のサブクラスで使用されます。

パラメータ:
comps - 追加するコンポーネントの null 以外の列挙。列挙された各要素のクラスは String。列挙は要素の抽出に使用される
syntax - この複合名の構文を指定する null 以外のプロパティー。プロパティーの内容は、クラスの説明を参照

CompoundName

public CompoundName(String n,
                    Properties syntax)
             throws InvalidNameException
指定した構文プロパティーで指定される構文を使用して、文字列 n を構文解析することで、新しい複合名インスタンスを構築します。

パラメータ:
n - 構文解析する null 以外の文字列
syntax - この複合名の構文を指定する null 以外のプロパティーのリスト。プロパティーの内容は、クラスの説明を参照
例外:
InvalidNameException - 'n' が syntax で指定される構文に違反する場合
メソッドの詳細

toString

public String toString()
複合名の構文規則を使用する、この複合名の文字列表記を生成します。構文規則は、クラスの説明で説明します。空のコンポーネントは、空の文字列で表されます。 このように生成された文字列表記を、同じ構文プロパティーを持つ CompoundName コンストラクタに引き渡すと、新しい同様の複合名を作成できます。

オーバーライド:
クラス Object 内の toString
戻り値:
この複合名の null 以外の文字列表記

equals

public boolean equals(Object obj)
obj がこの複合名と構文的に等しいかを判定します。obj が null であるか、または CompoundName ではない場合、false が返されます。一方の各コンポーネントがもう一方の対応するコンポーネントと「等しい」場合、2 つの複合名は等しくなります。

等しいかどうかは、この複合名の構文によっても定義されます。CompoundName のデフォルトの実装では、2 つのコンポーネントが等しいかどうかを比較するときに、構文プロパティー jndi.syntax.ignorecase および jndi.syntax.trimblanks が使用されます。大文字と小文字が区別されない場合、同じ文字のシーケンスを持ち、大文字と小文字どちらでも文字列が等しいとみなされます。空白が削除される場合は、比較のために最初の空白と末尾の空白は無視されます。

2 つの複合名には、同じ数のコンポーネントが必要です。

実装にあたっての注意:現在、2 つの複合名の構文プロパティーが等しいかどうかは比較されていません。今後比較される可能性があります。

オーバーライド:
クラス Object 内の equals
パラメータ:
obj - null の可能性がある比較対照オブジェクト
戻り値:
obj がこの複合名と等しい場合は true、そうでない場合は false
関連項目:
compareTo(java.lang.Object obj)

hashCode

public int hashCode()
この複合名のハッシュコードを計算します。ハッシュコードとは、この複合名の各コンポーネントの標準化形式ハッシュコードの集合です。各コンポーネントは、ハッシュコードが計算される前に、複合名の構文に従って標準化されます。たとえば、大文字と小文字を区別する名前の場合、大文字形式の名前のハッシュコードは、小文字の名前と同じです。

オーバーライド:
クラス Object 内の hashCode
戻り値:
この名前のハッシュコードを表す int
関連項目:
Object.equals(java.lang.Object), Hashtable

clone

public Object clone()
この複合名のコピーを作成します。この複合名のコンポーネントを変更しても、新しいコピーには影響しません。 また逆の場合も同じです。コピーとこの複合名では、同じ構文を共有します。

定義:
インタフェース Name 内の clone
オーバーライド:
クラス Object 内の clone
戻り値:
この複合名の null 以外のコピー
関連項目:
Cloneable

compareTo

public int compareTo(Object obj)
CompoundName と、指定された Object の順序を比較します。この Name が指定された Object より小さい場合は負の整数、等しい場合は 0、大きい場合は正の整数をそれぞれ返します。

obj が null、または CompoundName のインスタンスではない場合は、ClassCastException がスローされます。

2 つの複合名が等しいとはどのような意味かについては、equals() を参照してください。2 つの複合名が等しい場合は、0 を返します。

複合名の順序付けは、複合名の構文によります。デフォルトでは、文字列比較の辞書規則に準拠します。 この規則は、複合名に含まれるすべてのコンポーネントに適用されます。 ただし、コンポーネントが比較されるときは、equals() の場合と同様に、jndi.syntax.ignorecase プロパティーと jndi.syntax.trimblanks プロパティーが適用されます。この複合名が「辞書規則に従って」 obj より小さい場合は、負の数が返されます。この複合名が「辞書規則に従って」 obj より大きい場合は、正の数が返されます。

実装にあたっての注意:現在、2 つの複合名の構文プロパティーが等しいかどうかは、順序の確認時には比較されていません。今後比較される可能性があります。

定義:
インタフェース Comparable<Object> 内の compareTo
定義:
インタフェース Name 内の compareTo
パラメータ:
obj - 比較される null 以外のオブジェクト
戻り値:
この Name が指定された Object より小さい場合は負の整数、等しい場合は 0、 大きい場合は正の整数
例外:
ClassCastException - obj が CompoundName ではない場合
関連項目:
equals(java.lang.Object)

size

public int size()
この複合名のコンポーネント数を取得します。

定義:
インタフェース Name 内の size
戻り値:
この複合名のコンポーネント数の負以外の値

isEmpty

public boolean isEmpty()
この複合名が空かどうかを判定します。コンポーネントがゼロの場合、複合名は空です。

定義:
インタフェース Name 内の isEmpty
戻り値:
この複合名が空の場合は true、そうでない場合は false

getAll

public Enumeration<String> getAll()
この複合名のコンポーネントを、文字列の列挙として取得します。この列挙でこの複合名を更新した場合の影響については、定義されていません。

定義:
インタフェース Name 内の getAll
戻り値:
この複合名のコンポーネントの null 以外の列挙。列挙された各要素のクラスは String。

get

public String get(int posn)
この複合名のコンポーネントを取得します。

定義:
インタフェース Name 内の get
パラメータ:
posn - 取得するコンポーネントの 0 から始まるインデックス範囲は [0,size()] でなければならない
戻り値:
インデックスのコンポーネント
例外:
ArrayIndexOutOfBoundsException - 位置が指定した範囲にない場合

getPrefix

public Name getPrefix(int posn)
コンポーネントがこの複合名のコンポーネントの接頭辞で構成される複合名を作成します。作成された複合名とこの複合名では、同じ構文を共有します。そのあとこの複合名を変更しても、返される名前には影響しません。 また逆の場合も同じです。

定義:
インタフェース Name 内の getPrefix
パラメータ:
posn - 停止するコンポーネントの 0 から始まるインデックス範囲は [0,size()] でなければならない
戻り値:
範囲が [0,posn) のインデックスのコンポーネントで構成される複合名
例外:
ArrayIndexOutOfBoundsException - 位置が指定した範囲にない場合

getSuffix

public Name getSuffix(int posn)
コンポーネントがこの複合名のコンポーネントの接尾辞で構成される複合名を作成します。作成された複合名とこの複合名では、同じ構文を共有します。そのあとこの複合名を変更しても、返される名前には影響しません。

定義:
インタフェース Name 内の getSuffix
パラメータ:
posn - 開始するコンポーネントの 0 から始まるインデックス範囲は [0,size()] でなければならない
戻り値:
範囲が [posn,size()) のインデックスのコンポーネントで構成される複合名。位置が size() と 等しい場合は、空の複合名が返される
例外:
ArrayIndexOutOfBoundsException - 位置が指定した範囲にない場合

startsWith

public boolean startsWith(Name n)
複合名がこの複合名の接頭辞であるかどうかが判定されます。複合名 'n' は、getPrefix(n.size()) と等しい場合に接頭辞になります。 つまり、この複合名は 'n' で開始されます。n が null であるか、または複合名ではない場合は、false が返されます。

実装にあたっての注意:現在、n の構文プロパティーは比較時に使用されていません。今後比較される可能性があります。

定義:
インタフェース Name 内の startsWith
パラメータ:
n - null の可能性がある判定対象の複合名
戻り値:
n が CompoundName で、この複合名 の接頭辞である場合は true、そうでない場合は false

endsWith

public boolean endsWith(Name n)
複合名がこの複合名の接尾辞であるかどうかが判定されます。複合名 'n' は、getSuffix(size()-n.size()) と等しい場合に接尾辞になります。 つまり、この複合名は 'n' で終了します。n が null であるか、または複合名ではない場合は、false が返されます。

実装にあたっての注意:現在、n の構文プロパティーは比較時に使用されていません。今後比較される可能性があります。

定義:
インタフェース Name 内の endsWith
パラメータ:
n - null の可能性がある判定対象の複合名
戻り値:
n が CompoundName で、この複合名 の接尾辞である場合は true、そうでない場合は false

addAll

public Name addAll(Name suffix)
            throws InvalidNameException
複合名のコンポーネントを、この複合名の末尾に順に追加します。

実装にあたっての注意:現在、接尾辞の構文プロパティーは使用または確認されていません。今後比較される可能性があります。

定義:
インタフェース Name 内の addAll
パラメータ:
suffix - 追加する null 以外のコンポーネント
戻り値:
新しい CompoundName ではなく、更新された CompoundName。null は不可
例外:
InvalidNameException - 接尾辞が複合名ではない、 またはコンポーネントの追加がこの複合名の構文に違反する場合 (コンポーネントの数を超えるなど)

addAll

public Name addAll(int posn,
                   Name n)
            throws InvalidNameException
複合名のコンポーネントを、この複合名の指定した位置に順に追加します。最初の新しいコンポーネントのインデックス、またはその後ろにあるこの複合名のコンポーネントは上 (インデックス 0 から離れる) に移動され、新しいコンポーネントが調整されます。

実装にあたっての注意:現在、接尾辞の構文プロパティーは使用または確認されていません。今後比較される可能性があります。

定義:
インタフェース Name 内の addAll
パラメータ:
n - 追加する null 以外のコンポーネント
posn - 新しいコンポーネントが追加されるこの名前のインデックス。範囲は [0,size()] でなければならない
戻り値:
新しい CompoundName ではなく、更新された CompoundName。null は不可
例外:
ArrayIndexOutOfBoundsException - 位置が指定した範囲にない場合
InvalidNameException - n が複合名ではない場合、 またはコンポーネントの追加がこの複合名の構文に違反する場合 (コンポーネントの数を超えるなど)

add

public Name add(String comp)
         throws InvalidNameException
単一のコンポーネントをこの複合名の最後に追加します。

定義:
インタフェース Name 内の add
パラメータ:
comp - 追加する null 以外のコンポーネント
戻り値:
新しい CompoundName ではなく、更新された CompoundName。null は不可
例外:
InvalidNameException - 名前の最後にコンポーネントを追加すると、 複合名の構文に違反する場合

add

public Name add(int posn,
                String comp)
         throws InvalidNameException
単一のコンポーネントを、この複合名の指定した位置に追加します。新しいコンポーネントのインデックス、またはその後ろにあるこの複合名のコンポーネントは 1 つ上 (インデックス 0 から離れる) に移動され、新しいコンポーネントが調整されます。

定義:
インタフェース Name 内の add
パラメータ:
comp - 追加する null 以外のコンポーネント
posn - 新しいコンポーネントが追加されるインデックス範囲は [0,size()] でなければならない
戻り値:
新しい CompoundName ではなく、更新された CompoundName。null は不可
例外:
ArrayIndexOutOfBoundsException - 位置が指定した範囲にない場合
InvalidNameException - 指定した位置にコンポーネントを追加すると 複合名の構文に違反する場合

remove

public Object remove(int posn)
              throws InvalidNameException
この複合名からコンポーネントを削除します。位置 'posn' にある複合名のコンポーネントが削除され、'posn' より大きいインデックスのコンポーネントは、1 つ下 (インデックス 0 の方に) に移動されます。

定義:
インタフェース Name 内の remove
パラメータ:
posn - 削除するコンポーネントのインデックス範囲は [0,size()] でなければならない
戻り値:
削除されたコンポーネント (String)
例外:
ArrayIndexOutOfBoundsException - 位置が指定した範囲にない場合 (複合名が空の場合を含む)
InvalidNameException - コンポーネントを削除すると、複合名の構文に違反する場合

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。