- 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)。 examples showing string form of composite name and its corresponding structural form (CompositeName) String Name CompositeName "" {} (the empty name == new CompositeName("") == new CompositeName()) "x" {"x"} "x/y" {"x", "y"} "x/" {"x", ""} "/x" {"", "x"} "/" {""} "//" {"", ""} "/x/" {"", "x", ""} "x//y" {"x", "", "y"}组成实例
以下是一些组合示例。 右列显示组成字符串复合名称,而左列显示组成相应的CompositeName。 请注意,组合两个复合名称的字符串形式只需将它们的字符串形式连接在一起。 composition examples showing string names and composite names String Names 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
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 变量 构造器 描述 CompositeName()构造一个新的空复合名称。CompositeName(String n)通过使用复合名称语法(从左到右,斜杠分隔)解析字符串n来构造新的复合名称实例。protectedCompositeName(Enumeration<String> comps)使用'comps'指定的组件构造一个新的复合名称实例。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 Nameadd(int posn, String comp)在此复合名称中的指定位置添加单个组件。Nameadd(String comp)将单个组件添加到此复合名称的末尾。NameaddAll(int posn, Name n)在此复合名称中的指定位置添加复合名称的组件(按顺序)。NameaddAll(Name suffix)将复合名称的组件(按顺序)添加到此复合名称的末尾。Objectclone()生成此复合名称的副本。intcompareTo(Object obj)将此CompositeName与指定的Object进行比较以获得顺序。booleanendsWith(Name n)确定复合名称是否是此复合名称的后缀。booleanequals(Object obj)确定两个复合名称是否相等。Stringget(int posn)检索此复合名称的组件。Enumeration<String>getAll()检索此复合名称的组件作为字符串的枚举。NamegetPrefix(int posn)创建一个复合名称,其组件由此复合名称中组件的前缀组成。NamegetSuffix(int posn)创建一个复合名称,其组件由此复合名称中组件的后缀组成。inthashCode()计算此复合名称的哈希码。booleanisEmpty()确定此复合名称是否为空。Objectremove(int posn)从此复合名称中删除组件。intsize()检索此复合名称中的组件数。booleanstartsWith(Name n)确定复合名称是否是此复合名称的前缀。StringtoString()生成此复合名称的字符串表示形式。
-
-
-
构造方法详细信息
-
CompositeName
protected CompositeName(Enumeration<String> comps)
使用'comps'指定的组件构造一个新的复合名称实例。 当受保护的方法覆盖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构造函数以创建新的等效复合名称。
-
equals
public boolean equals(Object obj)
确定两个复合名称是否相等。 如果obj为null或不是复合名称,则返回false。 如果一个中的每个组件等于另一个中的相应组件,则两个复合名称相等。 这意味着两者具有相同数量的组件,并且每个组件对另一个名称中相应组件的equals()测试返回true。- 重写:
-
equals在类Object - 参数
-
obj- 要比较的可能为null的对象。 - 结果
- 如果obj等于此复合名称,则返回true,否则返回false。
- 另请参见:
-
hashCode()
-
hashCode
public int hashCode()
计算此复合名称的哈希码。 哈希码是此复合名称的各个组件的哈希码的总和。- 重写:
-
hashCode在类Object - 结果
- 表示此名称的哈希码的int。
- 另请参见:
-
equals(java.lang.Object)
-
compareTo
public int compareTo(Object obj)
将此CompositeName与指定的Object进行比较以获得顺序。 返回负整数,零或正整数,因为此Name小于,等于或大于给定的Object。如果obj为null或者不是CompositeName的实例,则抛出ClassCastException。
请参阅equals()了解两个复合名称相等的含义。 如果两个复合名称相等,则返回0。
复合名称的排序遵循字符串比较的词典规则,其扩展名适用于复合名称中的所有组件。 效果就好像所有组件都按照指定的顺序排列,并且在两个阵容中应用了词典编纂规则。 如果此复合名称“按字典顺序”小于obj,则返回负数。 如果此复合名称“按字典顺序”大于obj,则返回正数。
- Specified by:
-
compareTo接口Comparable<Object> - Specified by:
-
compareTo接口Name - 参数
-
obj- 要比较的非null对象。 - 结果
- 一个负整数,零或正整数,因为此Name小于,等于或大于给定的Object。
- 异常
-
ClassCastException- 如果obj不是CompositeName。 - 另请参见:
-
Comparable.compareTo(Object)
-
clone
public Object clone()
生成此复合名称的副本。 对此复合名称的组件的更改不会影响新副本,反之亦然。
-
isEmpty
public boolean isEmpty()
确定此复合名称是否为空。 如果组件零,则复合名称为空。
-
getAll
public Enumeration<String> getAll()
检索此复合名称的组件作为字符串的枚举。 此枚举的更新对此复合名称的影响未定义。
-
get
public String get(int posn)
检索此复合名称的组件。- Specified by:
-
get在界面Name - 参数
-
posn- 要检索的组件的从0开始的索引。 必须在[0,size())范围内。 - 结果
- 索引posn处的非null组件。
- 异常
-
ArrayIndexOutOfBoundsException- 如果posn超出指定范围。
-
getPrefix
public Name getPrefix(int posn)
创建一个复合名称,其组件由此复合名称中组件的前缀组成。 对此复合名称的后续更改不会影响返回的名称。- Specified by:
-
getPrefix接口Name - 参数
-
posn- 要停止的组件的从0开始的索引。 必须在[0,size()]范围内。 - 结果
- 一个复合名称,由[0,posn]范围内的索引处的组件组成。
- 异常
-
ArrayIndexOutOfBoundsException- 如果posn超出指定范围。
-
getSuffix
public Name getSuffix(int posn)
创建一个复合名称,其组件由此复合名称中组件的后缀组成。 对此复合名称的后续更改不会影响返回的名称。- Specified by:
-
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。- Specified by:
-
startsWith在界面Name - 参数
-
n- 要检查的可能为null的名称。 - 结果
- 如果n是CompositeName并且是此复合名称的前缀,则返回true,否则返回false。
-
endsWith
public boolean endsWith(Name n)
确定复合名称是否是此复合名称的后缀。 如果复合名称'n'等于getSuffix(size() - n.size()),则复合名称'n'是后缀 - 换句话说,此复合名称以'n'结尾。 如果n为null或不是复合名称,则返回false。
-
addAll
public Name addAll(Name suffix) throws InvalidNameException
将复合名称的组件(按顺序)添加到此复合名称的末尾。- Specified by:
-
addAll接口Name - 参数
-
suffix- 要添加的非null组件。 - 结果
- 更新的CompositeName,而不是新的。 不能为空。
- 异常
-
InvalidNameException- 如果后缀不是复合名称。
-
addAll
public Name addAll(int posn, Name n) throws InvalidNameException
在此复合名称中的指定位置添加复合名称的组件(按顺序)。 在第一个新组件的索引处或之后的此组合名称的组件向上移动(远离索引0)以容纳新组件。- Specified by:
-
addAll在界面Name - 参数
-
n- 要添加的非null组件。 -
posn- 此名称中用于添加新组件的索引。 必须在[0,size()]范围内。 - 结果
- 更新的CompositeName,而不是新的。 不能为空。
- 异常
-
InvalidNameException- 如果n不是复合名称。 -
ArrayIndexOutOfBoundsException- 如果posn超出指定范围。
-
add
public Name add(String comp) throws InvalidNameException
将单个组件添加到此复合名称的末尾。- Specified by:
-
add接口Name - 参数
-
comp- 要添加的非null组件。 - 结果
- 更新的CompositeName,而不是新的。 不能为空。
- 异常
-
InvalidNameException- 如果在名称末尾添加comp会违反名称的语法。
-
add
public Name add(int posn, String comp) throws InvalidNameException
在此复合名称中的指定位置添加单个组件。 在新组件的索引处或之后,此组合名称的组件向上移动一个(远离索引0)以容纳新组件。- Specified by:
-
add接口Name - 参数
-
comp- 要添加的非null组件。 -
posn- 添加新组件的索引。 必须在[0,size()]范围内。 - 结果
- 更新的CompositeName,而不是新的。 不能为空。
- 异常
-
ArrayIndexOutOfBoundsException- 如果posn超出指定范围。 -
InvalidNameException- 如果在指定位置添加comp会违反名称的语法。
-
remove
public Object remove(int posn) throws InvalidNameException
从此复合名称中删除组件。 删除位于“posn”位置的此复合名称的组件,并将索引大于“posn”的组件向下移动(朝向索引0)1。- Specified by:
-
remove在界面Name - 参数
-
posn- 要删除的组件的索引。 必须在[0,size())范围内。 - 结果
- 删除了组件(String)。
- 异常
-
ArrayIndexOutOfBoundsException- 如果posn超出指定范围(包括复合名称为空的情况)。 -
InvalidNameException- 如果删除组件将违反名称的语法。
-
-