- java.lang.Object
-
- javax.naming.CompositeName
-
- All Implemented Interfaces:
-
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
s。 请注意,组合两个复合名称的字符串形式只需要将其字符串形式连接在一起。 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
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 CompositeName()
构造一个新的空复合名称。CompositeName(String n)
通过使用复合名称语法(从左到右,斜杠分隔)解析字符串n来构造新的复合名称实例。protected
CompositeName(Enumeration<String> comps)
使用“comps”指定的组件构造新的组合名称实例。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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与指定的对象进行比较。boolean
endsWith(Name n)
确定复合名称是否是此复合名称的后缀。boolean
equals(Object 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()
生成此复合名称的字符串表示形式。
-
-
-
构造方法详细信息
-
CompositeName
protected CompositeName(Enumeration<String> comps)
使用“comps”指定的组件构造新的组合名称实例。 当它被覆盖诸如clone(),getPrefix(),getSuffix()等方法时,这个protected方法是由CompositeName的子类使用的。- 参数
-
comps
- 包含新组合名称的组件的非空枚举。 每个元素都是String类。 枚举将用于提取其元素。
-
CompositeName
public CompositeName(String n) throws InvalidNameException
通过使用复合名称语法(从左到右,斜杠分隔)解析字符串n来构造新的复合名称实例。 组合名称语法在类描述中有详细描述。- 参数
-
n
- 要解析的非空字符串。 - 异常
-
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
- 可能要比较的空对象。 - 结果
- 如果obj等于此复合名称,则为true,否则为false。
- 另请参见:
-
hashCode()
-
hashCode
public int hashCode()
计算此复合名称的哈希码。 哈希码是此复合名称的各个组件的哈希码的总和。- 重写:
-
hashCode
在Object
- 结果
- 表示此名称的哈希码的int。
- 另请参见:
-
equals(java.lang.Object)
-
compareTo
public int compareTo(Object obj)
将此CompositeName与指定的对象进行比较。 返回一个负整数,零或正整数,因为该名称小于,等于或大于给定的对象。如果obj为null或CompositeName的实例,则抛出ClassCastException。
对于两个复合名称相同,这意味着equals()。 如果两个复合名称相等,则返回0。
复合名称的排序遵循字符串比较的字典规则,其扩展名适用于复合名称中的所有组件。 效果就好像所有组件都按照指定的顺序排列,并且在两个阵容中应用了词典规则。 如果此复合名称比词汇“词典”小,则返回一个负数。 如果此复合名称比词典“词典”大,则返回正数。
- Specified by:
-
compareTo
在接口Comparable<Object>
- Specified by:
-
compareTo
在接口Name
- 参数
-
obj
- 要比较的非空对象。 - 结果
- 负整数,零或正整数,因为该名称小于,等于或大于给定的对象。
- 异常
-
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处的非空组件。
- 异常
-
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'为空或不是复合名称,则返回false。- Specified by:
-
startsWith
在接口Name
- 参数
-
n
- 可能要查询的null名称。 - 结果
- 如果n是CompositeName,并且是此复合名称的前缀,则为true,否则为false。
-
endsWith
public boolean endsWith(Name n)
确定复合名称是否是此复合名称的后缀。 复合名称“n”如果等于getSuffix(size() - n.size()),则为后缀 - 换句话说,此复合名称以“n”结尾。 如果n不为复合名,则返回false。
-
addAll
public Name addAll(Name suffix) throws InvalidNameException
将组合名称的组件按顺序添加到此组合名称的末尾。- Specified by:
-
addAll
在接口Name
- 参数
-
suffix
- 要添加的非零组件。 - 结果
- 更新的CompositeName,而不是一个新的。 不能为空。
- 异常
-
InvalidNameException
- 如果后缀不是组合名称。
-
addAll
public Name addAll(int posn, Name n) throws InvalidNameException
在组合名称中的指定位置添加复合名称的组件。 在第一个新组件的索引之前或之后,此组合名称的组件向上移动(远离索引0)以适应新的组件。- Specified by:
-
addAll
在接口Name
- 参数
-
n
- 要添加的非零组件。 -
posn
- 添加新组件的名称中的索引。 必须在[0,size()]范围内。 - 结果
- 更新的CompositeName,而不是一个新的。 不能为空。
- 异常
-
InvalidNameException
- 如果n不是复合名称。 -
ArrayIndexOutOfBoundsException
- 如果posn在指定范围之外。
-
add
public Name add(String comp) throws InvalidNameException
将单个组件添加到此组合名称的末尾。- Specified by:
-
add
在接口Name
- 参数
-
comp
- 要添加的非零组件。 - 结果
- 更新的CompositeName,而不是一个新的。 不能为空。
- 异常
-
InvalidNameException
- 如果在名称末尾添加comp将违反名称的语法。
-
add
public Name add(int posn, String comp) throws InvalidNameException
在此复合名称中的指定位置添加单个组件。 在新组件的索引之前或之后,此组合名称的组件向上移动一(远离索引0)以适应新组件。- Specified by:
-
add
在接口Name
- 参数
-
comp
- 要添加的非零组件。 -
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
- 如果删除组件将违反名称的语法。
-
-