模块 java.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 语法定义了以下元字符:
  • 转义(反斜杠\),
  • 引号字符(单引号 (') 和双引号 (")),以及
  • 组件分隔符(正斜杠字符 (/))。
在将组件组合成复合名称字符串时,任何出现的前导引号、任何元字符之前的转义符、组件末尾的转义符或未引用组件中的组件分隔符都必须以转义符开头.或者,为避免如所述添加转义字符,可以使用匹配的单引号或匹配的双引号将整个组件括起来。双引号组件中出现的单引号不被视为元字符(并且不需要转义),反之亦然。

比较两个复合名称时,字符的大小写很重要。

前导组件分隔符(复合名称字符串以分隔符开头)表示前导空组件(由空字符串组成的组件)。尾随组件分隔符(复合名称字符串以分隔符结尾)表示尾随空组件。相邻的组件分隔符表示一个空组件。

复合名称示例

此表显示了一些复合名称的示例。每行显示复合名称的字符串形式及其对应的结构形式 (CompositeName)。
复合名称的字符串形式及其对应的结构形式(CompositeName)的示例
字符串名称 CompositeName
"" {}(空名称 == new CompositeName("") == new CompositeName())
“X” {“X”}
“x/y” {“x”,“y”}
“X/” {"x", ""}
“/X” {““, “X”}
"/" {""}
"//" {"", ""}
“/X/” {““, “X”, ””}
“x//y” {"x", "", "y"}

组成示例

这里有一些组合示例。右列显示组合字符串复合名称,而左列显示组合相应的 CompositeName s。请注意,组合两个复合名称的字符串形式只涉及将它们的字符串形式连接在一起。
显示字符串名称和复合名称的组合示例
字符串名称 CompositeNames
"x/y" + "/" = x/y/ {"x", "y"} + {""} = {"x", "y", ""}
"" + "x" = "x" {} + {“x”} = {“x”}
"/" + "x" = "/x" {""} + {"x"} = {"", "x"}
“x”+“”+“”=“x” {“x”} + {} + {} = {“x”}

多线程访问

CompositeName 实例未针对并发多线程访问进行同步。尝试访问和修改 CompositeName 的多个线程应该锁定该对象。
自从:
1.3
参见:
  • 构造方法总结

    构造方法
    修饰符
    构造方法
    描述
     
    构造一个新的空复合名称。
     
    通过使用复合名称语法(从左到右,斜线分隔)解析字符串 n 来构造一个新的复合名称实例。
    protected
    使用“comps”指定的组件构造一个新的复合名称实例。
  • 方法总结

    修饰符和类型
    方法
    描述
    add(int posn, String comp)
    在此复合名称中的指定位置添加单个组件。
    add(String comp)
    将单个组件添加到此复合名称的末尾。
    addAll(int posn, Name n)
    在此复合名称中的指定位置按顺序添加复合名称的组件。
    addAll(Name suffix)
    将复合名称的组件按顺序添加到此复合名称的末尾。
    生成此复合名称的副本。
    int
    将此 CompositeName 与指定的 Object 进行比较以获得顺序。
    boolean
    确定复合名称是否是此复合名称的后缀。
    boolean
    equals(Object obj)
    确定两个复合名称是否相等。
    get(int posn)
    检索此复合名称的组件。
    检索此复合名称的组件作为字符串枚举。
    getPrefix(int posn)
    创建一个复合名称,其组件由该复合名称中组件的前缀组成。
    getSuffix(int posn)
    创建一个复合名称,其组件由该复合名称中组件的后缀组成。
    int
    计算此复合名称的哈希码。
    boolean
    确定此复合名称是否为空。
    remove(int posn)
    从此复合名称中删除一个组件。
    int
    size()
    检索此复合名称中的组件数。
    boolean
    确定复合名称是否是该复合名称的前缀。
    生成此复合名称的字符串表示形式。

    在类 java.lang.Object 中声明的方法

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • 构造方法详细信息

    • CompositeName

      protected CompositeName(Enumeration <String > comps)
      使用“comps”指定的组件构造一个新的复合名称实例。当 CompositeName 的子类重写诸如 clone()、getPrefix()、getSuffix() 等方法时,此受保护的方法将供它们使用。
      参数:
      comps - 包含新复合名称组件的非空枚举。每个元素都属于 String 类。将使用枚举来提取其元素。
    • CompositeName

      public CompositeName(String  n) throws InvalidNameException
      通过使用复合名称语法(从左到右,斜线分隔)解析字符串 n 来构造一个新的复合名称实例。复合名称语法在类描述中有详细描述。
      参数:
      n - 要解析的非空字符串。
      抛出:
      InvalidNameException - 如果 n 具有无效的复合名称语法。
    • CompositeName

      public CompositeName()
      构造一个新的空复合名称。当在其上调用 isEmpty() 时,这样的名称返回 true。
  • 方法详情

    • toString

      public String  toString()
      生成此复合名称的字符串表示形式。字符串表示包括按顺序枚举复合名称的每个组件并用正斜杠字符分隔每个组件。根据类描述中描述的 JNDI 语法,在必要时应用引号和转义字符。空组件由空字符串表示。这样生成的字符串表示可以传递给 CompositeName 构造方法以创建一个新的等效复合名称。
      重写:
      toString 在类 Object
      返回:
      此复合名称的非空字符串表示形式。
    • equals

      public boolean equals(Object  obj)
      确定两个复合名称是否相等。如果 obj 为 null 或不是复合名称,则返回 false。如果一个中的每个组件都等于另一个中的相应组件,则两个复合名称相等。这意味着两者具有相同数量的组件,并且每个组件针对其他名称中的相应组件的 equals() 测试返回 true。
      重写:
      equals 在类 Object
      参数:
      obj - 要比较的可能为空的对象。
      返回:
      如果 obj 等于此复合名称,则为 true,否则为 false。
      参见:
    • hashCode

      public int hashCode()
      计算此复合名称的哈希码。散列码是该复合名称的各个组成部分的散列码之和。
      重写:
      hashCode 在类 Object
      返回:
      表示此名称的哈希码的 int。
      参见:
    • compareTo

      public int compareTo(Object  obj)
      将此 CompositeName 与指定的 Object 进行比较以获得顺序。返回负整数、零或正整数,因为此名称小于、等于或大于给定的对象。

      如果 obj 为空或不是 CompositeName 的实例,则抛出 ClassCastException。

      有关两个复合名称相等的含义,请参见 equals()。如果两个复合名称相等,则返回 0。

      复合名称的排序遵循字符串比较的字典顺序规则,扩展适用于复合名称中的所有组件。效果就好像所有组件都按其指定的顺序排列,并且字典规则应用于两个排列。如果此复合名称“按字典顺序”小于 obj,则返回负数。如果此复合名称“按字典顺序”大于 obj,则返回一个正数。

      指定者:
      compareTo 在接口 Comparable<Object>
      指定者:
      compareTo 在接口 Name
      参数:
      obj - 要比较的非空对象。
      返回:
      负整数、零或正整数,因为此名称小于、等于或大于给定的对象。
      抛出:
      ClassCastException - 如果 obj 不是 CompositeName。
      参见:
    • clone

      public Object  clone()
      生成此复合名称的副本。更改此复合名称的组件不会影响新副本,反之亦然。
      指定者:
      clone 在接口 Name
      重写:
      clone 在类 Object
      返回:
      此复合名称的非空副本。
      参见:
    • size

      public int size()
      检索此复合名称中的组件数。
      指定者:
      size 在接口 Name
      返回:
      此复合名称中组件的非负数。
    • isEmpty

      public boolean isEmpty()
      确定此复合名称是否为空。如果复合名称具有零个组件,则它是空的。
      指定者:
      isEmpty 在接口 Name
      返回:
      如果此复合名称为空,则为 true,否则为 false。
    • getAll

      public Enumeration <String > getAll()
      检索此复合名称的组件作为字符串枚举。更新此复合名称对此枚举的影响未定义。
      指定者:
      getAll 在接口 Name
      返回:
      此复合名称的组件的非空枚举。枚举的每个元素都属于 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()) 范围内索引处的组件组成的复合名称。如果 posn 等于 size(),则返回一个空的复合名称。
      抛出:
      ArrayIndexOutOfBoundsException - 如果 posn 超出指定范围。
    • startsWith

      public boolean startsWith(Name  n)
      确定复合名称是否是该复合名称的前缀。如果复合名称“n”等于 getPrefix(n.size()),则它是一个前缀——换句话说,该复合名称以“n”开头。如果 'n' 为 null 或不是复合名称,则返回 false。
      指定者:
      startsWith 在接口 Name
      参数:
      n - 要检查的可能为空的名称。
      返回:
      如果 n 是 CompositeName 并且是此复合名称的前缀,则返回 true,否则返回 false。
    • endsWith

      public boolean endsWith(Name  n)
      确定复合名称是否是此复合名称的后缀。如果复合名称“n”等于 getSuffix(size()-n.size()),则它是一个后缀——换句话说,此复合名称以“n”结尾。如果 n 为 null 或不是复合名称,则返回 false。
      指定者:
      endsWith 在接口 Name
      参数:
      n - 要检查的可能为空的名称。
      返回:
      如果 n 是 CompositeName 并且是此复合名称的后缀,则为 true,否则为 false。
    • addAll

      public Name  addAll(Name  suffix) throws InvalidNameException
      将复合名称的组件按顺序添加到此复合名称的末尾。
      指定者:
      addAll 在接口 Name
      参数:
      suffix - 要添加的非空组件。
      返回:
      更新后的 CompositeName,不是新的。不能为空。
      抛出:
      InvalidNameException - 如果后缀不是复合名称。
    • addAll

      public Name  addAll(int posn, Name  n) throws InvalidNameException
      在此复合名称中的指定位置按顺序添加复合名称的组件。在第一个新组件的索引处或之后的此复合名称的组件向上移动(远离索引 0)以容纳新组件。
      指定者:
      addAll 在接口 Name
      参数:
      posn - 在此名称中添加新组件的索引。必须在 [0,size()] 范围内。
      n - 要添加的非空组件。
      返回:
      更新后的 CompositeName,不是新的。不能为空。
      抛出:
      InvalidNameException - 如果 n 不是复合名称。
      ArrayIndexOutOfBoundsException - 如果 posn 超出指定范围。
    • add

      public Name  add(String  comp) throws InvalidNameException
      将单个组件添加到此复合名称的末尾。
      指定者:
      add 在接口 Name
      参数:
      comp - 要添加的非空组件。
      返回:
      更新后的 CompositeName,不是新的。不能为空。
      抛出:
      InvalidNameException - 如果在名称末尾添加 comp 会违反名称的语法。
    • add

      public Name  add(int posn, String  comp) throws InvalidNameException
      在此复合名称中的指定位置添加单个组件。此复合名称的位于新组件索引处或之后的组件向上移动一位(远离索引 0)以容纳新组件。
      指定者:
      add 在接口 Name
      参数:
      posn - 添加新组件的索引。必须在 [0,size()] 范围内。
      comp - 要添加的非空组件。
      返回:
      更新后的 CompositeName,不是新的。不能为空。
      抛出:
      ArrayIndexOutOfBoundsException - 如果 posn 超出指定范围。
      InvalidNameException - 如果在指定位置添加 comp 会违反名称的语法。
    • remove

      public Object  remove(int posn) throws InvalidNameException
      从此复合名称中删除一个组件。此复合名称在位置 'posn' 的组件被删除,索引大于 'posn' 的组件向下移动(向索引 0)一个。
      指定者:
      remove 在接口 Name
      参数:
      posn - 要删除的组件的索引。必须在 [0,size()) 范围内。
      返回:
      已删除的组件(一个字符串)。
      抛出:
      ArrayIndexOutOfBoundsException - 如果 posn 超出指定范围(包括复合名称为空的情况)。
      InvalidNameException - 如果删除组件会违反名称的语法。