JavaTM 2 Platform
Standard Ed. 5.0

javax.naming
クラス CompositeName

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

public class CompositeName
extends Object
implements Name

このクラスは、合成名を表します。合成名とは、複数の名前空間にまたがる一連のコンポーネントの名前です。各コンポーネントは、ネーミングシステムの名前空間に由来する文字列名です。コンポーネントが階層名前空間から生ずる場合、CompoundName クラスを使用することでその基本部分に構文解析することができます。

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

JNDI 合成名の構文

JNDI では、合成名の標準文字列表記が定義されます。この表記では、各コンポーネントを区切るためのコンポーネント区切り文字 (スラッシュ (/)) を使用して、左から右に合成名のコンポーネントが連結されます。JNDI 構文では、次のメタキャラクタが定義されます。 先行する引用符、メタキャラクタに先行するエスケープ、コンポーネントの末尾のエスケープ、または引用符のないコンポーネントのコンポーネント区切り文字には、そのコンポーネントが合成名文字列に変換されるときに、前にエスケープ文字を付ける必要があります。または、このようなエスケープ文字を追加しない場合は、単一引用符または二重引用符を対で使用して、コンポーネント全体を引用符で囲みます。二重引用符で囲まれたコンポーネントの単一引用符は、メタキャラクタとはみなされず、エスケープされることもありません。また逆の場合も同じです。

2 つの合成名を比較する場合は、大文字と小文字の区別が重要になります。

先行するコンポーネント区切り文字 (区切り文字で始まる合成名の文字列) は、先行する空のコンポーネント (空の文字列で構成されるコンポーネント) を表します。末尾のコンポーネント区切り文字 (区切り文字で終わる合成名の文字列) は、末尾の空のコンポーネントを表します。隣接する複合区切り文字は、空のコンポーネントを表します。

合成名の例

次の表に、合成名の例を示します。各行は、合成名の文字列形式、および対応する構造形式 (CompositeName) を示しています。

文字列名CompositeName
""{} (空の名前 == 新しい CompositeName("") == 新しい CompositeName())
"x"{"x"}
"x/y"{"x", "y"}
"x/"{"x", ""}
"/x"{"", "x"}
"/"{""}
"//"{"", ""}
"/x/"{"", "x", ""}
"x//y"{"x", "", "y"}

変換の例

変換の例を示します。右側の列に文字列の合成名の変換を、左側の列に対応する CompositeName の変換を示します。2 つの合成名を持つ文字列形式の変換は、文字列形式を連結するだけです。

文字列名CompositeName
"x/y" + "/" = x/y/{"x", "y"} + {""} = {"x", "y", ""}
"" + "x" = "x"{} + {"x"} = {"x"}
"/" + "x" = "/x"{""} + {"x"} = {"", "x"}
"x" + "" + "" = "x"{"x"} + {} + {} = {"x"}

マルチスレッドアクセス

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

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

コンストラクタの概要
  CompositeName()
          新しい空の合成名を構築します。
protected CompositeName(Enumeration<String> comps)
          'comps' で指定されるコンポーネントを使用して、新しい合成名インスタンスを構築します。
  CompositeName(String n)
          合成名の構文 (左から右、スラッシュで区切られる) を使用して、文字列 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)
          CompositeName と、指定された Object の順序を比較します。
 boolean endsWith(Name n)
          合成名がこの合成名の接尾辞であるかが判定されます。
 boolean equals(Object obj)
          2 つの合成名が等しいかを判定します。
 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
 

コンストラクタの詳細

CompositeName

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

パラメータ:
comps - 新しい合成名のコンポーネントを格納する null 以外の列挙。各要素のクラスは String。列挙は要素の抽出に使用される

CompositeName

public CompositeName(String n)
              throws InvalidNameException
合成名の構文 (左から右、スラッシュで区切られる) を使用して、文字列 n を構文解析することで、新しい合成名インスタンスを構築します。合成名の構文は、クラスの説明のときに詳しく説明します。

パラメータ:
n - 構文解析する null 以外の文字列
例外:
InvalidNameException - n に無効な合成名の構文がある場合

CompositeName

public CompositeName()
新しい空の合成名を構築します。isEmpty() が呼び出されると、true を返します。

メソッドの詳細

toString

public String toString()
この合成名の文字列表記を生成します。文字列表記では、合成名の各コンポーネントが列挙され、各コンポーネントがスラッシュ文字で区切られます。引用とエスケープ文字は、JNDI 構文に従う必要のある場所に適用されます。これについては、クラスの説明のときに説明します。空のコンポーネントは、空の文字列で表されます。 このように生成された文字列表記を CompositeName コンストラクタに引き渡すと、新しい同様の合成名を作成できます。

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

equals

public boolean equals(Object obj)
2 つの合成名が等しいかを判定します。obj が null であるか、または合成名ではない場合は、false を返します。一方の各コンポーネントがもう一方の対応するコンポーネントと等しい場合は、2 つの合成名は等しくなります。これは、両方の合成名に同じ数のコンポーネントがあり、各コンポーネントの equals() テストでもう一方の名前の対応するコンポーネントを調べると true が返されることを示しています。

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

hashCode

public int hashCode()
この合成名のハッシュコードを計算します。ハッシュコードとは、この合成名の各コンポーネントのハッシュコードの集合です。

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

compareTo

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

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

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

合成名の順序付けは、文字列比較の辞書規則に従っています。合成名のすべてのコンポーネントに適用される拡張機能もあります。その結果、すべてのコンポーネントが指定した順序で、2 つのラインアップに適用された辞書規則に従って並べられたようになります。この合成名が「辞書規則に従って」obj より小さい場合は、負の数が返されます。この合成名が「辞書規則に従って」obj より大きい場合は、正の数が返されます。

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

clone

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

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

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()] でなければならない
戻り値:
インデックス位置の null 以外のコンポーネント
例外:
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 が返されます。

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

endsWith

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

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

addAll

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

定義:
インタフェース Name 内の addAll
パラメータ:
suffix - 追加する null 以外のコンポーネント
戻り値:
新しい CompositeName ではなく、更新された CompositeName。null は不可
例外:
InvalidNameException - 接尾辞が合成名ではない場合

addAll

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

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

add

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

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

add

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

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

remove

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

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

JavaTM 2 Platform
Standard Ed. 5.0

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

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