JavaTM 2 Platform
Standard Ed. 6

javax.naming.directory
類別 BasicAttribute

java.lang.Object
  繼承者 javax.naming.directory.BasicAttribute
所有已實作的介面:
Serializable, Cloneable, Attribute

public class BasicAttribute
extends Object
implements Attribute

此類別提供 Attribute 介面的基本實作。

此實作不支持網要方法 getAttributeDefinition()getAttributeSyntaxDefinition()。它們僅拋出 OperationNotSupportedException。如果 BasicAttribute 的子類別支持它們,則其應該覆寫這些方法。

在測試相等性或搜尋值時,BasicAttribute 類別預設使用 Object.equals() 確定屬性值的相等性,值為陣列時除外。對於陣列,需要使用 Object.equals() 檢查陣列的每個元素。在進行類似的相等性檢查時,BasicAttribute 的子類別可以通過覆寫那些在其中使用網要具有意義的方法來利用網要資訊。類似地,預設情況下 BasicAttribute 類別返回傳遞給其建構子和/或使用添加/移除方法進行操作的值。BasicAttribute 的子類別可以覆寫 get()getAll(),從目錄動態獲取值(或者直接實作 Attribute 介面,而不為 BasicAttribute 創建子類別)。

注意,更新 BasicAttribute(如添加或移除值)對目錄中相應的屬性表示形式沒有影響。只有使用 DirContext 介面中的操作才能實作對目錄的更新。

BasicAttribute 實例與共時多執行緒存取不同步。試圖存取並修改 BasicAttribute 的多個執行緒應該鎖定物件。

從以下版本開始:
1.3
另請參見:
序列化表格

欄位摘要
protected  String attrID
          保存屬性的 id。
protected  boolean ordered
          記錄此屬性的值是否有序的標誌。
protected  Vector<Object> values
          保存屬性的值。
 
建構子摘要
BasicAttribute(String id)
          建構一個不帶值無序屬性的新實例。
BasicAttribute(String id, boolean ordered)
          建構一個不帶值的可能為有序屬性的新實例。
BasicAttribute(String id, Object value)
          建構一個帶有單個值的無序屬性的新實例。
BasicAttribute(String id, Object value, boolean ordered)
          建構一個帶有單個值的可能為有序屬性的新實例。
 
方法摘要
 void add(int ix, Object attrVal)
          將屬性值添加到屬性值的有序列表中。
 boolean add(Object attrVal)
          向此屬性添加新值。
 void clear()
          從此屬性移除所有值。
 Object clone()
          創建並返回此物件的一個副本。
 boolean contains(Object attrVal)
          確定值是否在此屬性中。
 boolean equals(Object obj)
          確定 obj 是否等於此屬性。
 Object get()
          檢索此屬性的其中一個值。
 Object get(int ix)
          從屬性值的有序列表中檢索屬性值。
 NamingEnumeration<?> getAll()
          檢索此屬性值的列舉。
 DirContext getAttributeDefinition()
          檢索此屬性的網要定義。
 DirContext getAttributeSyntaxDefinition()
          檢索與此屬性關聯的語法定義。
 String getID()
          檢索此屬性的 id。
 int hashCode()
          計算此屬性的雜湊碼。
 boolean isOrdered()
          確定此屬性的值是否是有序的。
 Object remove(int ix)
          從屬性值的有序列表中移除屬性值。
 boolean remove(Object attrval)
          從此屬性中移除指定值。
 Object set(int ix, Object attrVal)
          設置屬性值的有序列表中的屬性值。
 int size()
          檢索此屬性中的值數。
 String toString()
          產生此屬性的字元串表示形式。
 
從類別 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

attrID

protected String attrID
保存屬性的 id。其由公共建構子初始化且不能為 null,除非已經覆寫 BasicAttribute 中使用 attrID 的方法。


values

protected transient Vector<Object> values
保存屬性的值。由公共建構子初始化。其不能為 null,除非已經覆寫 BasicAttribute 中使用這些值的方法。


ordered

protected boolean ordered
記錄此屬性的值是否有序的標誌。

建構子詳細資訊

BasicAttribute

public BasicAttribute(String id)
建構一個不帶值無序屬性的新實例。

參數:
id - 屬性的 id。它不能為 null。

BasicAttribute

public BasicAttribute(String id,
                      Object value)
建構一個帶有單個值的無序屬性的新實例。

參數:
id - 屬性的 id。它不能為 null。
value - 屬性的值。如果為 null,則向屬性中添加 null 值。

BasicAttribute

public BasicAttribute(String id,
                      boolean ordered)
建構一個不帶值的可能為有序屬性的新實例。

參數:
id - 屬性的 id。它不能為 null。
ordered - 為 true 表示屬性值將是有序的;為 false 表示其為無序。

BasicAttribute

public BasicAttribute(String id,
                      Object value,
                      boolean ordered)
建構一個帶有單個值的可能為有序屬性的新實例。

參數:
id - 屬性的 id。它不能為 null。
value - 屬性的值。如果為 null,則向屬性中添加 null 值。
ordered - 為 true 表示屬性值將是有序的;為 false 表示其為無序。
方法詳細資訊

clone

public Object clone()
從類別 Object 複製的描述
創建並返回此物件的一個副本。「副本」的準確含義可能依賴於物件的類別。這樣做的目的是,對於任何物件 x,表達式:
x.clone() != x
為 true,表達式:
x.clone().getClass() == x.getClass()
也為 true,但這些並非必須要滿足的要求。一般情況下:
x.clone().equals(x)
true,但這並非必須要滿足的要求。

按照慣例,返回的物件應該通過調用 super.clone 獲得。如果一個類別及其所有的父級類別(Object 除外)都遵守此約定,則 x.clone().getClass() == x.getClass()

按照慣例,此方法返回的物件應該獨立於該物件(正被複製的物件)。要獲得此獨立性,在 super.clone 返回物件之前,有必要對該物件的一個或多個欄位進行修改。這通常意味著要複製包含正在被複製物件的內部「深層結構」的所有可變物件,並使用對副本的參考替換對這些物件的參考。如果一個類別只包含基本欄位或對不變物件的參考,那麼通常不需要修改 super.clone 返回的物件中的欄位。

Object 類別的 clone 方法執行特定的複製操作。首先,如果此物件的類別不能實作介面 Cloneable,則會拋出 CloneNotSupportedException。注意,所有的陣列都被視為實作介面 Cloneable。否則,此方法會創建此物件的類別的一個新實例,並像通過分派那樣,嚴格使用此物件相應欄位的內容初始化該物件的所有欄位;這些欄位的內容沒有被自我複製。所以,此方法執行的是該物件的「淺表複製」,而不「深層複製」操作。

Object 類別本身不實作介面 Cloneable,所以在類別為 Object 的物件上調用 clone 方法將會導致在運行時拋出異常。

指定者:
介面 Attribute 中的 clone
覆寫:
類別 Object 中的 clone
返回:
此實例的一個副本。
另請參見:
Cloneable

equals

public boolean equals(Object obj)
確定 obj 是否等於此屬性。如果兩個屬性的屬性 id、語法和值都相等,則這兩個屬性相等。如果屬性值是無序的,則添加值的順序無關緊要。如果屬性值是有序的,則值必須與順序比對。如果 obj 為 null 或者不是 Attribute,則返回 false。

預設情況下,在比較屬性 id 及其值時使用 Object.equals(),值為陣列時除外。對於陣列,需要使用 Object.equals() 檢查陣列的每個元素。子類別可以覆寫此方法以利用網要語法資訊和比對規則,其定義了對兩個屬性的相等有意義的內容。子類別如何使用和是否使用網要資訊由子類別確定。如果子類別覆寫 equals(),則其也應該覆寫 hashCode(),這樣兩個相等的屬性才能具有相同的雜湊碼。

覆寫:
類別 Object 中的 equals
參數:
obj - 要檢查的可能為 null 的物件。
返回:
如果 obj 等於此屬性,則返回 true,否則返回 false。
另請參見:
hashCode(), contains(java.lang.Object)

hashCode

public int hashCode()
計算此屬性的雜湊碼。

該雜湊碼通過將屬性 id 及其所有值的雜湊碼相加來計算,值為陣列時除外。對於陣列,要加上每個陣列元素的雜湊碼。如果子類別覆寫 hashCode(),則其也應該覆寫 equals(),這樣兩個相等的屬性才能具有相同的雜湊碼。

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

toString

public String toString()
產生此屬性的字元串表示形式。字元串由屬性的 id 及其值組成。此字元串用於除錯,不以程式方式進行解釋。

覆寫:
類別 Object 中的 toString
返回:
此屬性的非 null 字元串表示形式。

getAll

public NamingEnumeration<?> getAll()
                            throws NamingException
檢索此屬性值的列舉。

預設情況下,返回值就是傳遞給建構子的和/或使用添加/替換/移除方法對其進行操作的那些值。子類別可以覆寫此方法以從目錄動態檢索值。

指定者:
介面 Attribute 中的 getAll
返回:
屬性值的非 null 列舉。每個列舉元素都可能是一個 null 物件。物件的類別就是屬性值的類別。如果屬性值為 null,則元素為 null。如果屬性的值為零,則返回空列舉。
拋出:
NamingException - 如果檢索值時遇到命名異常。
另請參見:
Attribute.isOrdered()

get

public Object get()
           throws NamingException
檢索此屬性的其中一個值。

預設情況下,返回值就是傳遞給建構子的和/或使用添加/替換/移除方法對其進行操作的那些值之一。子類別可以覆寫此方法以從目錄動態檢索值。

指定者:
介面 Attribute 中的 get
返回:
表示屬性值之一的可能為 null 的物件。如果屬性值為 null,則返回 null。
拋出:
NamingException - 如果檢索值時遇到命名異常。

size

public int size()
從介面 Attribute 複製的描述
檢索此屬性中的值數。

指定者:
介面 Attribute 中的 size
返回:
此屬性中的非負值數。

getID

public String getID()
從介面 Attribute 複製的描述
檢索此屬性的 id。

指定者:
介面 Attribute 中的 getID
返回:
此屬性的 id。它不能為 null。

contains

public boolean contains(Object attrVal)
確定值是否在此屬性中。

預設情況下,在將 attrVal 與此屬性的值相比較時使用 Object.equals()attrVal 為陣列時除外。對於陣列,需要使用 Object.equals() 檢查陣列的每個元素。子類別可以使用網要資訊確定相等性。

指定者:
介面 Attribute 中的 contains
參數:
attrVal - 要檢查的可能為 null 的值。如果為 null,則檢查屬性是否具有其值不為 null 的屬性值。
返回:
如果 attrVal 是此屬性的值之一,則返回 true;否則返回 false。
另請參見:
Object.equals(java.lang.Object), equals(java.lang.Object)

add

public boolean add(Object attrVal)
向此屬性添加新值。

預設情況下,在將 attrVal 與此屬性的值相比較時使用 Object.equals()attrVal 為陣列時除外。對於陣列,需要使用 Object.equals() 檢查陣列的每個元素。子類別可以使用網要資訊確定相等性。

指定者:
介面 Attribute 中的 add
參數:
attrVal - 要添加的可能為 null 的新值。如果為 null,則將 null 作為屬性值添加。
返回:
如果添加了值,則返回 true;否則返回 false。

remove

public boolean remove(Object attrval)
從此屬性中移除指定值。

預設情況下,在將 attrVal 與此屬性的值相比較時使用 Object.equals()attrVal 為陣列時除外。對於陣列,需要使用 Object.equals() 檢查陣列的每個元素。子類別可以使用網要資訊確定相等性。

指定者:
介面 Attribute 中的 remove
參數:
attrval - 要從此屬性中移除的可能為 null 的值。如果為 null,則移除為 null 的屬性值。
返回:
如果移除了值,則返回 true;否則返回 false。

clear

public void clear()
從介面 Attribute 複製的描述
從此屬性移除所有值。

指定者:
介面 Attribute 中的 clear

isOrdered

public boolean isOrdered()
從介面 Attribute 複製的描述
確定此屬性的值是否是有序的。如果屬性值是有序的,則允許重複的值。如果屬性值是無序的,則它們以任意順序出現,沒有重複值。

指定者:
介面 Attribute 中的 isOrdered
返回:
如果此屬性的值是有序的,則返回 true;否則返回 false。
另請參見:
Attribute.get(int), Attribute.remove(int), Attribute.add(int, java.lang.Object), Attribute.set(int, java.lang.Object)

get

public Object get(int ix)
           throws NamingException
從介面 Attribute 複製的描述
從屬性值的有序列表中檢索屬性值。此方法返回屬性值列表中 ix 索引處的值。如果屬性值是無序的,則此方法返回正好位於該索引處的值。

指定者:
介面 Attribute 中的 get
參數:
ix - 屬性值的有序列表中值的索引。0 <= ix < size()
返回:
位於索引 ix 處的可能為 null 的屬性值;如果屬性值為 null,則返回 null。
拋出:
NamingException - 如果檢索值時遇到命名異常。

remove

public Object remove(int ix)
從介面 Attribute 複製的描述
從屬性值的有序列表中移除屬性值。此方法移除屬性值列表中 ix 索引處的值。如果屬性值是無序的,則此方法移除正好位於該索引處的值。位於大於 ix 的索引處的值朝列表開頭上移(並且其索引減一)。

指定者:
介面 Attribute 中的 remove
參數:
ix - 要移除的值的索引。0 <= ix < size()
返回:
已移除的位於索引 ix 處的可能為 null 的屬性值;如果屬性值為 null,則返回 null。

add

public void add(int ix,
                Object attrVal)
從介面 Attribute 複製的描述
將屬性值添加到屬性值的有序列表中。此方法將 attrVal 添加到屬性值列表的索引 ix 處。位於 ix 處的索引的值或大於該處的索引的值朝列表的末尾下移(並且其索引加一)。如果屬性值是無序的並且已經具有 attrVal,則拋出 IllegalStateException

指定者:
介面 Attribute 中的 add
參數:
ix - 要添加新值的屬性值的有序列表中的索引。0 <= ix <= size()
attrVal - 要添加的可能為 null 的屬性值;如果為 null,則 null 即為添加的值。

set

public Object set(int ix,
                  Object attrVal)
從介面 Attribute 複製的描述
設置屬性值的有序列表中的屬性值。此方法將屬性值列表中 ix 索引處的值設置為 attrVal。移除舊值。如果屬性值是無序的,則此方法將正好位於該索引處的值設置為 attrVal,除非 attrVal 已經是這些值中的一個。若其已經是這些值中的一個,則拋出 IllegalStateException

指定者:
介面 Attribute 中的 set
參數:
ix - 屬性值的有序列表中值的索引。0 <= ix < size()
attrVal - 要使用的可能為 null 的屬性值。如果為 null,則 'null' 將替換舊值。
返回:
已替換的索引 ix 處的可能為 null 的屬性值。如果屬性值已為 null,則返回 null。

getAttributeSyntaxDefinition

public DirContext getAttributeSyntaxDefinition()
                                        throws NamingException
檢索與此屬性關聯的語法定義。

預設情況下此方法拋出 OperationNotSupportedException。如果子類別支持網要,則其應該覆寫此方法。

指定者:
介面 Attribute 中的 getAttributeSyntaxDefinition
返回:
屬性的語法定義。如果實作支持網要但此特定屬性不具有任何網要資訊,則返回 null。
拋出:
OperationNotSupportedException - 如果不支持獲取網要。
NamingException - 如果在獲取網要時發生命名異常。

getAttributeDefinition

public DirContext getAttributeDefinition()
                                  throws NamingException
檢索此屬性的網要定義。

預設情況下此方法拋出 OperationNotSupportedException。如果子類別支持網要,則其應該覆寫此方法。

指定者:
介面 Attribute 中的 getAttributeDefinition
返回:
此屬性的網要定義。如果實作支持網要但此特定屬性不具有任何網要資訊,則返回 null。
拋出:
OperationNotSupportedException - 如果不支持獲取網要。
NamingException - 如果在獲取網要時發生命名異常。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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