JavaTM 2 Platform
Standard Ed. 6

javax.naming
類別 CompositeName

java.lang.Object
  繼承者 javax.naming.CompositeName
所有已實作的介面:
Serializable, Cloneable, Comparable<Object>, Name

public class CompositeName
extends Object
implements Name

此類別表示一個復合名稱,即一個跨多個名稱空間元件名稱的序列。每個元件都是一個取自命名系統名稱空間的字元串名稱。如果元件取自層次名稱空間,則可以通過使用 CompoundName 類別將該元件進一步解析成其原子部分。

復合名稱的元件都已編號。帶 N 個元件的復合名稱的索引在 0 到 N(但不包括 N)的範圍內變動。可將該範圍寫為 [0,N)。最重要的元件位於索引 0 處。空復合名稱沒有元件。

JNDI 復合名稱語法

JNDI 定義了復合名稱的標準字元串表示形式。此表示形式是復合名稱元件從左到右的串聯,並使用元件分隔符(正斜槓字元 (/))來分隔每個元件。JNDI 語法定義了以下元字元: 在將某個元件組合到復合名稱字元串中時,在該元件中出現的任何前引號、先於任何元字元的轉義符、位於元件末尾的轉義符或者結束參考元件中的元件分隔符之前都必須加上轉義字元。此外,為了避免像上述那樣添加轉義字元,可以使用比對的單引號或比對的雙引號將整個元件放入引號中。出現在雙引號參考的元件中的單引號不被認為是元字元(並且無需被轉義),反之亦然。

在比較兩個復合名稱時,字元的大小寫很重要。

前導元件分隔符(復合名稱字元串以分隔符開始)表示一個前導空元件(由空字元串組成的元件)。尾部元件分隔符(復合名稱以分隔符結束)表示一個尾部空元件。相鄰的元件分隔符表示一個空元件。

復合名稱範例

此表展示了一些復合名稱的範例。每一行表示一個復合名稱的字元串形式及其相應的結構形式 (CompositeName)。

字元串名稱 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。注意,組合兩個復合名稱的字元串形式只需將其字元串形式串聯在一起即可。

字元串名稱 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
另請參見:
序列化表格

建構子摘要
  CompositeName()
          建構一個新的空復合名稱。
protected CompositeName(Enumeration<String> comps)
          使用由 'comps' 指定的元件建構一個新的復合名稱實例。
  CompositeName(String n)
          通過使用復合名稱語法(從左到右,用斜槓分隔)解析字元串 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)
          比較此 CompositeName 與指定 Object 的順序。
 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()
          產生此復合名稱的字元串表示形式。
 
從類別 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

CompositeName

protected CompositeName(Enumeration<String> comps)
使用由 'comps' 指定的元件建構一個新的復合名稱實例。這個受保護的方法將由 CompositeName 的子類別在覆寫一些方法(比如 clone()、getPrefix() 和 getSuffix())時使用。

參數:
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 建構子,以創建一個新的等效復合名稱。

覆寫:
類別 Object 中的 toString
返回:
此復合名稱的非 null 字元串表示形式。

equals

public boolean equals(Object obj)
確定兩個復合名稱是否相等。如果 obj 為 null 或者不是一個復合名稱,則返回 false。如果一個復合名稱中的每個元件都等於另一個復合名稱中的相應元件,則兩個復合名稱相等。這暗示著兩個復合名稱有相同數量的元件,並且每個元件與另一個名稱中相應元件的 equals() 測試都返回 true。

覆寫:
類別 Object 中的 equals
參數:
obj - 要比較的可能為 null 的物件。
返回:
如果 obj 等於此復合名稱,則返回 true,否則返回 false。
另請參見:
hashCode()

hashCode

public int hashCode()
計算此復合名稱的雜湊碼。該雜湊碼是此復合名稱各個元件雜湊碼的總和。

覆寫:
類別 Object 中的 hashCode
返回:
表示此名稱的雜湊碼的 int。
另請參見:
equals(java.lang.Object)

compareTo

public int compareTo(Object obj)
比較此 CompositeName 與指定 Object 的順序。根據此 Name 小於、等於還是大於指定 Object 分別返回負整數、零或正整數。

如果 obj 為 null 或者不是一個 CompositeName 實例,則拋出 ClassCastException。

關於這對兩個復合名稱相等性的意義,請參見 equals()。如果兩個復合名稱是相等的,則返回 0。

復合名稱的排序遵從字元串比較的字典規則,並將此擴展到應用於復合名稱中的所有元件。效果就像將所有元件按照指定的順序排列起來,並在兩個佇列上應用字典規則。如果此復合名稱“按字典順序”小於 obj,則返回一個負數。如果此復合名稱“按字典順序”大於 obj,則返回一個正數。

指定者:
介面 Comparable<Object> 中的 compareTo
指定者:
介面 Name 中的 compareTo
參數:
obj - 要與之比較的非 null 物件。
返回:
根據此 Name 小於、等於還是大於指定 Object 分別返回負整數、零或正整數。
拋出:
ClassCastException - 如果 obj 不是 CompositeName。
另請參見:
Comparable.compareTo(Object)

clone

public Object clone()
產生此復合名稱的副本。對此復合名稱的元件進行的更改不會影響新副本,反之亦然。

指定者:
介面 Name 中的 clone
覆寫:
類別 Object 中的 clone
返回:
此復合名稱的非 null 副本。
另請參見:
Cloneable

size

public int size()
檢索此復合名稱中的元件數。

指定者:
介面 Name 中的 size
返回:
此復合名稱中的非負元件數。

isEmpty

public boolean isEmpty()
確定此復合名稱是否為空。如果復合名稱沒有任何元件,則該名稱為空。

指定者:
介面 Name 中的 isEmpty
返回:
如果此復合名稱為空,則返回 true,否則返回 false。

getAll

public Enumeration<String> getAll()
以字元串列舉的形式檢索此復合名稱的元件。在此列舉上更新此復合名稱的結果是不確定的。

指定者:
介面 Name 中的 getAll
返回:
此復合名稱元件的非 null 列舉。每個列舉元素都屬於 String 類別。

get

public String get(int posn)
檢索此復合名稱的元件。

指定者:
介面 Name 中的 get
參數:
posn - 要檢索的從 0 開始的元件索引。該索引必須在範圍 [0,size()) 內。
返回:
位於索引 posn 處的非 null 元件。
拋出:
ArrayIndexOutOfBoundsException - 如果 posn 超出指定範圍。

getPrefix

public Name getPrefix(int posn)
創建一個復合名稱,其元件由此復合名稱中元件的前綴組成。對此復合名稱進行的後續更改不會影響返回的名稱。

指定者:
介面 Name 中的 getPrefix
參數:
posn - 從 0 開始的元件索引,在該索引處停止。該索引必須在範圍 [0,size()] 內。
返回:
由索引範圍在 [0,posn) 之間的元件組成的復合名稱。
拋出:
ArrayIndexOutOfBoundsException - 如果 posn 超出指定範圍。

getSuffix

public Name getSuffix(int posn)
創建一個復合名稱,其元件由此復合名稱中元件的後綴組成。對此復合名稱進行的後續更改不會影響返回的名稱。

指定者:
介面 Name 中的 getSuffix
參數:
posn - 從 0 開始的元件索引,在該索引處開始。該索引必須在範圍 [0,size()] 內。
返回:
由索引範圍在 [posn,size()) 之間的元件組成的復合名稱。如果 posn 等於 size(),則返回一個空復合名稱。
拋出:
ArrayIndexOutOfBoundsException - 如果 posn 超出指定範圍。

startsWith

public boolean startsWith(Name n)
確定某一復合名稱是否是此復合名稱的前綴。如果某一復合名稱 'n' 等於 getPrefix(n.size()),則該名稱是一個前綴,換句話說,此復合名稱從 'n' 開始。如果 'n' 為 null 或者不是一個復合名稱,則返回 false。

指定者:
介面 Name 中的 startsWith
參數:
n - 要檢查的可能為 null 的名稱。
返回:
如果 n 是一個 CompositeName 並且是此復合名稱的前綴,則返回 true,否則返回 false。

endsWith

public boolean endsWith(Name n)
確定某一復合名稱是否是此復合名稱的後綴。如果某一復合名稱 'n' 等於 getSuffix(size()-n.size()),則該名稱是一個後綴,換句話說,此復合名稱以 'n' 結尾。如果 n 為 null 或者不是一個復合名稱,則返回 false。

指定者:
介面 Name 中的 endsWith
參數:
n - 要檢查的可能為 null 的名稱。
返回:
如果 n 是一個 CompositeName 並且是此復合名稱的後綴,則返回 true,否則返回 false。

addAll

public Name addAll(Name suffix)
            throws InvalidNameException
按順序將復合名稱的元件添加到此復合名稱的末尾。

指定者:
介面 Name 中的 addAll
參數:
suffix - 要添加的非 null 元件。
返回:
已更新的 CompositeName,而不是一個新的 CompositeName。不能為 null。
拋出:
InvalidNameException - 如果後綴不是一個復合名稱。

addAll

public Name addAll(int posn,
                   Name n)
            throws InvalidNameException
按順序將復合名稱的元件添加到此復合名稱中的指定位置。此復合名稱位於第一個新元件的索引處或這之後的元件被上移(遠離索引 0),以容納新元件。

指定者:
介面 Name 中的 addAll
參數:
n - 要添加的非 null 元件。
posn - 此名稱中的索引,將在該索引處添加新元件。該索引必須在範圍 [0,size()] 內。
返回:
已更新的 CompositeName,而不是一個新的 CompositeName。不能為 null。
拋出:
InvalidNameException - 如果 n 不是一個復合名稱。
ArrayIndexOutOfBoundsException - 如果 posn 超出指定範圍。

add

public Name add(String comp)
         throws InvalidNameException
將單個元件添加到此復合名稱的末尾。

指定者:
介面 Name 中的 add
參數:
comp - 要添加的非 null 元件。
返回:
已更新的 CompositeName,而不是一個新的 CompositeName。不能為 null。
拋出:
InvalidNameException - 如果在該名稱末尾添加 comp 違反該名稱的語法。

add

public Name add(int posn,
                String comp)
         throws InvalidNameException
在此復合名稱中的指定位置添加單個元件。此復合名稱位於新元件的索引處或這之後的元件被上移(遠離索引 0)一位,以容納新元件。

指定者:
介面 Name 中的 add
參數:
comp - 要添加的非 null 元件。
posn - posn 在其所在位置處添加新元件的索引。該索引必須在範圍 [0,size()) 內。
返回:
已更新的 CompositeName,而不是一個新的 CompositeName。不能為 null。
拋出:
ArrayIndexOutOfBoundsException - 如果 posn 超出指定範圍。
InvalidNameException - 如果在指定位置添加 comp 違反該名稱的語法。

remove

public Object remove(int posn)
              throws InvalidNameException
從此復合名稱中刪除一個元件。移除此復合名稱位置 'posn' 處的元件,而位於大於 'posn' 索引處的元件都將下移(朝著索引 0)一位。

指定者:
介面 Name 中的 remove
參數:
posn - 要刪除的元件的索引。該索引必須在範圍 [0,size()) 內。
返回:
移除的元件(一個 String)。
拋出:
ArrayIndexOutOfBoundsException - 如果 posn 超出指定範圍(包括復合名稱為空的情況)。
InvalidNameException - 如果刪除元件違反該名稱的語法。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only