|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.naming
类 CompoundName
java.lang.Object javax.naming.CompoundName
- 所有已实现的接口:
- Serializable, Cloneable, Comparable<Object>, Name
此类表示一个组合名称,即一个取自层次名称空间的名称。组合名称中的每个组件都是一个原子名称。
组合名称的组件都已编号。带 N 个组件的组合名称的索引在 0 到 N(但不包括 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" 中的 "=")。
- 在没有引号或转义符的字符串中,分隔符的任何实例都可以划分两个原子名称的界限。每个原子名称被称为一个组件。
- 分隔符、引号或转义符在其前面(左边)直接接有转义符时被转义。
- 如果有两组引号,特定的开始引号 (begin-quote) 必须与其相应的结束引号 (end-quote) 匹配。
- 位于组件之前的非转义开始引号必须与位于该组件结尾的非转义结束引号匹配。如此引用的组件称为引用组件。如果该组件没有应用下列涉及引用组件的规则之一,则通过移除开始引号和结束引号并将插入的字符视为普通字符来解析该组件。
- 嵌入非引用组件中的引号被视为普通字符串,无需匹配。
- 被转义或出现在非转移引号之间的分隔符被视为普通字符串,不再是分隔符。
- 引用组件中的转义字符串仅在后跟相应结束引用字符串时才是转义符。可以利用这一点将一个转义引号嵌套在引用组件中。
- 一个已转义的转义字符串不再被视为转义字符串。
- 不位于元字符串(引号或分隔符)之前的转义字符串以及不位于组件结尾处的转义字符串被视为普通字符串。
- 前导分隔符(组合名称字符串以分隔符开始)表示一个前导空原子组件(由空字符串组成)。尾部分隔符(组合名称以分隔符结束)表示一个尾部空原子组件。相邻分隔符表示一个空原子组件。
组合名称的字符串形式遵从上述语法。当将组合名称的组件转换成其字符串表示形式时,将应用上述保留语法规则(例如,嵌套的分隔符被转义或引用),以便在解析相同的字符串时,将产生相同的原始组合名称组件。
多线程访问
CompoundName 实例与并发多线程访问不同步。尝试访问并修改 CompoundName 的多个线程应该锁定对象。- 从以下版本开始:
- 1.3
- 另请参见:
- 序列化表格
字段摘要 | |
---|---|
protected javax.naming.NameImpl |
impl 此组合名称的实现。 |
protected Properties |
mySyntax 此组合名称的语法属性。 |
构造方法摘要 | |
---|---|
protected |
CompoundName(Enumeration<String> comps, Properties syntax) 使用 comps 和 syntax 指定的组件构造一个新的组合名称实例。 |
|
CompoundName(String n, Properties syntax) 通过解析使用提供的 syntax 属性所指定的语法的字符串 n 来构造一个新的组合名称实例。 |
方法摘要 | |
---|---|
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() 使用组合名称的语法规则生成此组合名称的字符串表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
impl
protected transient javax.naming.NameImpl impl
-
此组合名称的实现。此字段由构造方法初始化,不能为 null。子类应该将其视为只读变量。
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
-
通过解析使用提供的 syntax 属性所指定的语法的字符串 n 来构造一个新的组合名称实例。
- 参数:
-
n
- 要解析的非 null 字符串。 -
syntax
- 指定此组合名称语法的非 null 属性列表。有关这些属性的内容,请参阅类描述。 - 抛出:
-
InvalidNameException
- 如果 'n' 违反syntax
指定的语法。
方法详细信息 |
---|
toString
public String toString()
- 使用组合名称的语法规则生成此组合名称的字符串表示形式。这些语法规则已在类描述中说明。空组件用空字符串表示。 如此生成的字符串表示形式可以传递给具有相同 syntax 属性的 CompoundName 构造方法,以创建一个新的等效组合名称。
-
- 返回:
- 此组合名称的非 null 字符串表示形式。
equals
public boolean equals(Object obj)
-
确定 obj 在语法上是否等同于此组合名称。如果 obj 为 null 或者不是一个 CompoundName,则返回 false。如果一个组合名称中的每个组件都“等于”另一个组合名称中的相应组件,则这两个组合名称相等。
相等性也是根据此组合名称的语法定义的。CompoundName 的默认实现在比较两个组件的相等性时使用语法属性 jndi.syntax.ignorecase 和 jndi.syntax.trimblanks。如果忽略大小写,则具有相同字符顺序但大小写不同的两个字符串被认为是相等的。如果将去除空白,则为进行比较将忽略前导空白和结尾空白。
两个组合名称必须有相同的组件数。
实现注意事项:当前,不比较两个组合名称语法属性的相等性。这有可能在以后实现。
-
- 参数:
-
obj
- 要比较的可能为 null 的对象。 - 返回:
- 如果 obj 等于此组合名称,则返回 true,否则返回 false。
- 另请参见:
-
compareTo(java.lang.Object obj)
hashCode
public int hashCode()
- 计算此组合名称的哈希码。该哈希码是此组合名称“规范化”形式的各个组件的哈希码总和。每个组件都在计算其哈希码之前根据组合名称的语法被“规范化”。例如,对于不区分大小写的名称,大写形式的名称与小写形式的等效名称拥有相同的哈希码。
-
- 返回:
- 表示此名称的哈希码的 int。
- 另请参见:
-
Object.equals(java.lang.Object)
,Hashtable
clone
public Object clone()
- 创建此组合名称的副本。对此组合名称的组件进行的更改不会影响新副本,反之亦然。该副本和此组合名称共享相同的语法。
-
- 返回:
- 此组合名称的非 null 副本。
- 另请参见:
-
Cloneable
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,则返回一个正数。
实现注意事项:当前,在检查顺序时不比较两个组合名称语法属性的相等性。这有可能在以后实现。
-
- 指定者:
-
接口
Comparable<Object>
中的compareTo
- 指定者:
-
接口
Name
中的compareTo
-
- 参数:
-
obj
- 要与之比较的非 null 对象。 - 返回:
- 根据此 Name 小于、等于还是大于指定 Object 分别返回负整数、零或正整数。
- 抛出:
-
ClassCastException
- 如果 obj 不是一个 CompoundName。 - 另请参见:
-
equals(java.lang.Object)