- 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
- 原子名称组件之间的分隔符。 除非方向是“平坦的”,否则必须。
- 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”表示修剪名称组件中的任何前导和尾随空格以进行比较。 如果其值不是“真实”,或者如果该属性不存在,则空白很重要。
- jndi.syntax.separator.ava
- 如果存在,则指定在指定多个属性/值对时分隔attribute-value-assertions的字符串。 (例如“,”年龄= 65岁,性别=男性)。
- jndi.syntax.separator.typeval
- 如果存在,则指定将属性与值分隔的字符串(例如,“age = 65”中的“=”)
- 在没有引号或转义的字符串中,分隔符的任何实例都会分隔两个原子名称。 每个原子名称都称为组件 。
- 如果转义符紧接在(左侧)前面,则转义分隔符,引号或转义符。
- 如果有两组报价,则特定的开始报价必须与其对应的结束报价匹配。
- 在组件之前的非转义开头引用必须与组件末尾的非转义结束引号匹配。 这样引用的组分称为引用组分 。 它通过删除正在引用和结束引号以及将插入字符视为普通字符进行解析,除非下面列出的引用组件之一的规则适用。
- 嵌入在非引用组件中的引号被视为普通字符串,无需匹配。
- 转义或出现在非转义引号之间的分隔符被视为普通字符串而不是分隔符。
- 引用组件中的转义字符串仅在后跟相应的结束引号字符串时才用作转义。 这可用于在引用的组件中嵌入转义引用。
- 转义的转义字符串不会被视为转义字符串。
- 不在元字符串(引号或分隔符)之前且不在组件末尾的转义字符串被视为普通字符串。
- 前导分隔符(复合名称字符串以分隔符开头)表示前导空原子组件(由空字符串组成)。 尾随分隔符(复合名称字符串以分隔符结尾)表示尾随空原子组件。 相邻的分隔符表示空的原子组分。
复合名称的字符串形式遵循上述语法。 当复合名称的组件变为其字符串表示形式时,将应用上述保留语法规则(例如,对嵌入式分隔符进行转义或引用),以便在解析相同的字符串时,它将生成与原始化合物相同的组件名称。
多线程访问
CompoundName
实例未与并发多线程访问同步。 尝试访问和修改CompoundName
多个线程应锁定该对象。- 从以下版本开始:
- 1.3
- 另请参见:
- Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 protected Properties
mySyntax
此复合名称的语法属性。
-
构造方法摘要
构造方法 变量 构造器 描述 CompoundName(String n, Properties syntax)
通过使用提供的语法属性指定的语法解析字符串n来构造新的复合名称实例。protected
CompoundName(Enumeration<String> comps, Properties syntax)
使用comps和syntax中指定的组件构造一个新的复合名称实例。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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)
将此CompoundName与指定的Object进行比较以获取顺序。boolean
endsWith(Name n)
确定复合名称是否为此复合名称的后缀。boolean
equals(Object obj)
确定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()
使用复合名称的语法规则生成此复合名称的字符串表示形式。
-
-
-
字段详细信息
-
mySyntax
protected transient Properties mySyntax
此复合名称的语法属性。 此字段由构造函数初始化,不能为null。 它应该被子类视为只读变量。 mySyntax的任何必要更改都应在构造函数中进行,而不是在实例化复合名称之后。
-
-
构造方法详细信息
-
CompoundName
protected CompoundName(Enumeration<String> comps, Properties syntax)
使用comps和syntax中指定的组件构造一个新的复合名称实例。 当受保护的方法覆盖clone(),getPrefix(),getSuffix()等方法时,它们将由CompoundName的子类使用。- 参数
-
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构造函数,以创建新的等效复合名称。
-
equals
public boolean equals(Object obj)
确定obj在语法上是否等于此复合名称。 如果obj为null或不是CompoundName,则返回false。 如果一个中的每个组件与另一个中的相应组件“相等”,则两个化合物名称相等。等式也是根据此复合名称的语法定义的。 在比较两个组件是否相等时,CompoundName的默认实现使用语法属性jndi.syntax.ignorecase和jndi.syntax.trimblanks。 如果忽略大小写,则具有相同字符序列但具有不同大小写的两个字符串被视为相等。 如果正在修剪空白,则为了比较的目的,忽略前导和尾随空白。
两个化合物名称必须具有相同数量的组件。
实施说明:目前,两个化合物名称的语法属性不进行相等性比较。 他们可能在未来。
- 重写:
-
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()
创建此复合名称的副本。 对此复合名称的组件的更改不会影响新副本,反之亦然。 克隆和此复合名称共享相同的语法。
-
compareTo
public int compareTo(Object obj)
将此CompoundName与指定的Object进行比较以获取顺序。 返回负整数,零或正整数,因为此Name小于,等于或大于给定的Object。如果obj为null或不是CompoundName的实例,则抛出ClassCastException。
请参阅equals()了解两个化合物名称相等的含义。 如果两个复合名称相等,则返回0。
化合物名称的排序取决于化合物名称的语法。 默认情况下,它们遵循字典规则进行字符串比较,扩展名适用于复合名称中的所有组件,并且各个组件的比较受jndi.syntax.ignorecase和jndi.syntax.trimblanks属性的影响,与方式相同它们会影响equals()。 如果此复合名称“按字典顺序”小于obj,则返回负数。 如果此复合名称“按字典顺序”大于obj,则返回正数。
实现说明:当前检查订单时,不会比较两个复合名称的语法属性。 他们可能在未来。
- Specified by:
-
compareTo
在界面Comparable<Object>
- Specified by:
-
compareTo
在界面Name
- 参数
-
obj
- 要比较的非null对象。 - 结果
- 一个负整数,零或正整数,因为此Name小于,等于或大于给定的Object。
- 异常
-
ClassCastException
- 如果obj不是CompoundName。 - 另请参见:
-
equals(java.lang.Object)
-
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为null或不是复合名称,则返回false。实现说明:目前,在进行比较时不使用n的语法属性。 他们可能在未来。
- Specified by:
-
startsWith
接口Name
- 参数
-
n
- 要检查的可能为null的复合名称。 - 结果
- 如果n是CompoundName并且是此复合名称的前缀,则返回true,否则返回false。
-
endsWith
public boolean endsWith(Name n)
确定复合名称是否为此复合名称的后缀。 复合名称'n'是后缀,如果它等于getSuffix(size() - n.size()) - 换句话说,此复合名称以'n'结尾。 如果n为null或不是复合名称,则返回false。实现说明:目前,在进行比较时不使用n的语法属性。 他们可能在未来。
-
addAll
public Name addAll(Name suffix) throws InvalidNameException
将化合物名称的组件(按顺序)添加到此化合物名称的末尾。实现说明:目前不使用或检查后缀的语法属性。 他们可能在未来。
- Specified by:
-
addAll
在界面Name
- 参数
-
suffix
- 要添加的非null组件。 - 结果
- 更新的CompoundName,而不是新的。 不能为空。
- 异常
-
InvalidNameException
- 如果后缀不是复合名称,或者组件的添加违反了此复合名称的语法(例如,超出组件数)。
-
addAll
public Name addAll(int posn, Name n) throws InvalidNameException
在此化合物名称中的指定位置添加化合物名称的组件 - 按顺序。 在第一个新组件的索引处或之后的此复合名称的组件向上移动(远离索引0)以容纳新组件。实现说明:目前不使用或检查后缀的语法属性。 他们可能在未来。
- Specified by:
-
addAll
在界面Name
- 参数
-
n
- 要添加的非null组件。 -
posn
- 此名称中用于添加新组件的索引。 必须在[0,size()]范围内。 - 结果
- 更新的CompoundName,而不是新的。 不能为空。
- 异常
-
ArrayIndexOutOfBoundsException
- 如果posn超出指定范围。 -
InvalidNameException
- 如果n不是复合名称,或者组件的添加违反了此复合名称的语法(例如,超出组件数)。
-
add
public Name add(String comp) throws InvalidNameException
将单个组件添加到此复合名称的末尾。- Specified by:
-
add
在界面Name
- 参数
-
comp
- 要添加的非null组件。 - 结果
- 更新的CompoundName,而不是新的。 不能为空。
- 异常
-
InvalidNameException
- 如果在名称末尾添加comp将违反复合名称的语法。
-
add
public Name add(int posn, String comp) throws InvalidNameException
在此复合名称中的指定位置添加单个组件。 在新组件的索引处或之后,此组合名称的组件向上移动一个(远离索引0)以容纳新组件。- Specified by:
-
add
在界面Name
- 参数
-
comp
- 要添加的非null组件。 -
posn
- 添加新组件的索引。 必须在[0,size()]范围内。 - 结果
- 更新的CompoundName,而不是新的。 不能为空。
- 异常
-
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
- 如果删除组件将违反复合名称的语法。
-
-