モジュール java.naming
パッケージ 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 Properties
    この複合名の構文プロパティです。
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
     
    指定した構文プロパティで指定される構文を使用して、文字列nを構文解析することで、新しい複合名インスタンスを構築します。
    protected
    compsに指定されたコンポーネントとsyntaxを使用して、新しい複合名インスタンスを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    add​(int posn, String comp)
    単一のコンポーネントを、この複合名の指定した位置に追加します。
    add​(String comp)
    単一のコンポーネントをこの複合名の最後に追加します。
    addAll​(int posn, Name n)
    複合名のコンポーネントを、この複合名の指定した位置に順に追加します。
    addAll​(Name suffix)
    複合名のコンポーネントを、この複合名の末尾に順に追加します。
    この複合名のコピーを作成します。
    int
    compareTo​(Object obj)
    CompoundNameと、指定されたObjectの順序を比較します。
    boolean
    endsWith​(Name n)
    複合名がこの複合名の接尾辞であるかどうかが判定されます。
    boolean
    equals​(Object obj)
    objがこの複合名と構文的に等しいかを判定します。
    get​(int posn)
    この複合名のコンポーネントを取得します。
    この複合名のコンポーネントを、文字列の列挙として取得します。
    getPrefix​(int posn)
    コンポーネントがこの複合名のコンポーネントの接頭辞で構成される複合名を作成します。
    getSuffix​(int posn)
    コンポーネントがこの複合名のコンポーネントの接尾辞で構成される複合名を作成します。
    int
    この複合名のハッシュ・コードを計算します。
    boolean
    この複合名が空かどうかを判定します。
    remove​(int posn)
    この複合名からコンポーネントを削除します。
    int
    この複合名のコンポーネント数を取得します。
    boolean
    複合名がこの複合名の接頭辞であるかどうかが判定されます。
    複合名の構文規則を使用する、この複合名の文字列表記を生成します。

    クラス java.lang.Objectで宣言されたメソッド

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • mySyntax

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

    • CompoundName

      protected CompoundName(Enumeration<String> comps, Properties syntax)
      compsに指定されたコンポーネントとsyntaxを使用して、新しい複合名インスタンスを構築します。 この保護されたメソッドは、CompoundNameのサブクラスで、clone()、getPrefix()、getSuffix()などのメソッドをオーバーライドするときに使用されます。
      パラメータ:
      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コンストラクタに引き渡すと、新しい同様の複合名を作成できます。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      この複合名のnull以外の文字列表記。
    • equals

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

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

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

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

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

      public int hashCode()
      この複合名のハッシュ・コードを計算します。 ハッシュ・コードとは、この複合名の各コンポーネントの標準化形式ハッシュ・コードの集合です。 各コンポーネントは、ハッシュ・コードが計算される前に、複合名の構文に従って標準化されます。 たとえば、大文字と小文字を区別する名前の場合、大文字形式の名前のハッシュ・コードは、小文字の名前と同じです。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      この名前のハッシュ・コードを表すint。
      関連項目:
      Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
    • clone

      public Object clone()
      この複合名のコピーを作成します。 この複合名のコンポーネントを変更しても、新しいコピーには影響しません。また逆の場合も同じです。 クローンとこの複合名では、同じ構文を共有します。
      定義:
      clone、インタフェース: Name
      オーバーライド:
      clone、クラス: Object
      戻り値:
      この複合名の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つの複合名の構文プロパティが等しいかどうかは、順序の確認時には比較されていません。 今後比較される可能性があります。

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

      public int size()
      この複合名のコンポーネント数を取得します。
      定義:
      size、インタフェース: Name
      戻り値:
      この複合名のコンポーネント数の負以外の値。
    • isEmpty

      public boolean isEmpty()
      この複合名が空かどうかを判定します。 コンポーネントがゼロの場合、複合名は空です。
      定義:
      isEmpty、インタフェース: Name
      戻り値:
      この複合名が空の場合はtrue、そうでない場合はfalse。
    • getAll

      public Enumeration<String> getAll()
      この複合名のコンポーネントを、文字列の列挙として取得します。 この列挙でこの複合名を更新した場合の影響については、定義されていません。
      定義:
      getAll、インタフェース: Name
      戻り値:
      この複合名のコンポーネントのnull以外の列挙。 列挙された各要素のクラスはString。
    • get

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

      public Name getPrefix(int posn)
      コンポーネントがこの複合名のコンポーネントの接頭辞で構成される複合名を作成します。 作成された複合名とこの複合名では、同じ構文を共有します。 この複合名の後続の変更は、返される名前には影響しません。逆もまた同様です。
      定義:
      getPrefix、インタフェース: Name
      パラメータ:
      posn - 停止する位置を示す、コンポーネントの0から始まるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      範囲が[0,posn)のインデックスのコンポーネントで構成される複合名。
      例外:
      ArrayIndexOutOfBoundsException - posnが指定された範囲にない場合。
    • getSuffix

      public Name getSuffix(int posn)
      コンポーネントがこの複合名のコンポーネントの接尾辞で構成される複合名を作成します。 作成された複合名とこの複合名では、同じ構文を共有します。 この複合名の後続の変更は、返される名前には影響しません。
      定義:
      getSuffix、インタフェース: Name
      パラメータ:
      posn - 開始する位置を示す、コンポーネントの0から始まるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      範囲が[posn,size())のインデックスのコンポーネントで構成される複合名。 位置がsize()と等しい場合は、空の複合名が返される。
      例外:
      ArrayIndexOutOfBoundsException - posnが指定された範囲にない場合。
    • startsWith

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

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

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

      public boolean endsWith(Name n)
      複合名がこの複合名の接尾辞であるかどうかが判定されます。 コンパウンド名'n'は、getSuffix(size()-n.size()に等しい場合はサフィクスです。つまり、このコンパウンド名は'n'で終わります。 nがnullであるか、または複合名ではない場合は、falseが返されます。

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

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

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

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

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

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

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

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

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

      public Name add(int posn, String comp) throws InvalidNameException
      単一のコンポーネントを、この複合名の指定した位置に追加します。 新しいコンポーネントのインデックス、またはその後ろにあるこの複合名のコンポーネントは1つ上(インデックス0から離れる)に移動され、新しいコンポーネントが調整されます。
      定義:
      add、インタフェース: Name
      パラメータ:
      comp - 追加するnull以外のコンポーネント。
      posn - 新しいコンポーネントを追加するインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      新しいCompoundNameではなく、更新されたCompoundName。 nullは不可。
      例外:
      ArrayIndexOutOfBoundsException - posnが指定された範囲にない場合。
      InvalidNameException - 指定した位置にコンポーネントを追加すると複合名の構文に違反する場合。
    • remove

      public Object remove(int posn) throws InvalidNameException
      この複合名からコンポーネントを削除します。 位置'posn'にある複合名のコンポーネントが削除され、'posn'より大きいインデックスのコンポーネントは、1つ下(インデックス0の方に)に移動されます。
      定義:
      remove、インタフェース: Name
      パラメータ:
      posn - 削除するコンポーネントのインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      削除されたコンポーネント(String)。
      例外:
      ArrayIndexOutOfBoundsException - 位置が指定した範囲にない場合(複合名が空の場合を含む)。
      InvalidNameException - コンポーネントを削除すると、複合名の構文に違反する場合。