JavaTM 2 Platform
Standard Ed. 6

javax.management
類別 ImmutableDescriptor

java.lang.Object
  繼承者 javax.management.ImmutableDescriptor
所有已實作的介面:
Serializable, Cloneable, Descriptor

public class ImmutableDescriptor
extends Object
implements Descriptor

不可變的描述符。

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

欄位摘要
static ImmutableDescriptor EMPTY_DESCRIPTOR
          空描述符。
 
建構子摘要
ImmutableDescriptor(Map<String,?> fields)
          建構一個描述符,其中欄位名稱和值是給定 Map 的鍵和值。
ImmutableDescriptor(String... fields)
          建構包含給定欄位的描述符。
ImmutableDescriptor(String[] fieldNames, Object[] fieldValues)
          建構包含給定欄位和值的描述符。
 
方法摘要
 Descriptor clone()
          返回一個與此描述符相等的描述符。
 boolean equals(Object o)
          將此描述符與給定物件進行比較。
 String[] getFieldNames()
          返回描述符中的所有欄位名。
 String[] getFields()
          以 string 陣列的形式返回此 descriptor 中所包含的所有欄位。
 Object getFieldValue(String fieldName)
          返回指定欄位名的值,如果該名稱不存在任何值,則返回 null。
 Object[] getFieldValues(String... fieldNames)
          以 Object 陣列的形式返回該 descriptor 中的所有欄位值。
 int hashCode()
          返回此描述符的雜湊碼值。
 boolean isValid()
          如果所有欄位在給定其名稱的情況下都有合法值,則返回 true。
 void removeField(String fieldName)
          從描述符移除欄位。
 void setField(String fieldName, Object fieldValue)
          因為此類別不可變,所以不支持此操作。
 void setFields(String[] fieldNames, Object[] fieldValues)
          因為此類別不可變,所以不支持此操作。
 String toString()
          返回該物件的字元串表示。
static ImmutableDescriptor union(Descriptor... descriptors)
          返回一個 ImmutableDescriptor,其內容是給定描述符的並集。
 
從類別 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

EMPTY_DESCRIPTOR

public static final ImmutableDescriptor EMPTY_DESCRIPTOR
空描述符。

建構子詳細資訊

ImmutableDescriptor

public ImmutableDescriptor(String[] fieldNames,
                           Object[] fieldValues)
建構包含給定欄位和值的描述符。

拋出:
IllegalArgumentException - 如果陣列為 null、陣列的大小不同、欄位名稱為 null 或空,或者相同的欄位名稱出現多次。

ImmutableDescriptor

public ImmutableDescriptor(String... fields)
建構包含給定欄位的描述符。每個 String 都必須是 fieldName=fieldValue 的形式。欄位名稱在第一個 = 字元處結束;例如,如果 String 為 a=b=c,則欄位名稱為 a 且其值為 b=c

拋出:
IllegalArgumentException - 如果參數為 null、欄位名稱為空、相同欄位名稱出現多次或者其中一個字元串不包含 = 字元。

ImmutableDescriptor

public ImmutableDescriptor(Map<String,?> fields)

建構一個描述符,其中欄位名稱和值是給定 Map 的鍵和值。

拋出:
IllegalArgumentException - 如果參數為 null、欄位名稱為 null 或空,或者相同欄位名稱出現多次(可能因為欄位名稱不區分大小寫所致)。
方法詳細資訊

union

public static ImmutableDescriptor union(Descriptor... descriptors)

返回一個 ImmutableDescriptor,其內容是給定描述符的並集。出現在任何描述符中的每個欄位名稱都將出現在結果中,並具有調用方法時欄位名稱所具有的值。對任何描述符的後續更改不影響此處返回的 ImmutableDescriptor。

在最簡單的情況下,只有一個描述符,且返回的 ImmutableDescriptor 是在調用此方法時該描述符中欄位的副本:

Descriptor d = something();
ImmutableDescriptor copy = ImmutableDescriptor.union(d);
 

參數:
descriptors - 要合併的描述符。任何描述符都可以為 null,在此情況下可以將其跳過。
返回:
作為給定描述符並集的 ImmutableDescriptor。如果它是一個套件含所有所需欄位的 ImmutableDescriptor,則返回的物件可以與某個輸入描述符相同。
拋出:
IllegalArgumentException - 如果兩個 Descriptor 套件含具有不同關聯值的相同欄位名稱。如果基本型別陣列值是具有相同元素的同一型別的值,則將其視為相同。如果 Arrays.deepEquals(Object[],Object[]) 返回 true,則將物件陣列值視為相同。

getFieldValue

public final Object getFieldValue(String fieldName)
從介面 Descriptor 複製的描述
返回指定欄位名的值,如果該名稱不存在任何值,則返回 null。

指定者:
介面 Descriptor 中的 getFieldValue
參數:
fieldName - 欄位名稱。
返回:
相應的值,如果欄位不存在,則返回 null。

getFields

public final String[] getFields()
從介面 Descriptor 複製的描述
以 string 陣列的形式返回此 descriptor 中所包含的所有欄位。

指定者:
介面 Descriptor 中的 getFields
返回:
各欄位的 String 陣列,格式為 fieldName=fieldValue
如果欄位值不是一個 String,則對該值調用 toString() 方法並將返回值(用圓括號括起來)用作所返回陣列中欄位的值。如果欄位的值為 null,則返回陣列中的欄位值將為空。如果描述符為空,則將得到一個空陣列。
另請參見:
Descriptor.setFields(java.lang.String[], java.lang.Object[])

getFieldValues

public final Object[] getFieldValues(String... fieldNames)
從介面 Descriptor 複製的描述
以 Object 陣列的形式返回該 descriptor 中的所有欄位值。返回值的順序與 fieldNames String 陣列參數的順序相同。

指定者:
介面 Descriptor 中的 getFieldValues
參數:
fieldNames - 欄位名稱的 String 陣列,應該返回這些欄位的值。如果該陣列為空,則將返回一個空陣列。如果陣列為 null,則將返回所有值,如同參數是 Descriptor.getFieldNames() 返回的陣列一樣。如果陣列中某個欄位名不存在(包括欄位名為 null 或空字元串的情況),則對於要返回的比對陣列元素,將返回 null。
返回:
欄位值的 Object 陣列。如果 fieldNames 列表為空,則將得到一個空陣列。

getFieldNames

public final String[] getFieldNames()
從介面 Descriptor 複製的描述
返回描述符中的所有欄位名。

指定者:
介面 Descriptor 中的 getFieldNames
返回:
欄位名稱的 String 陣列。如果描述符為空,則將得到一個空陣列。

equals

public boolean equals(Object o)
將此描述符與給定物件進行比較。如果給定對象也是一個 Descriptor,並且兩個 Descriptor 具有相同的欄位名(可能有不同的情況)且有相同的關聯值,則物件相等。如果具備下列條件,則兩個 Descriptor 中欄位的各個值都相等:

指定者:
介面 Descriptor 中的 equals
覆寫:
類別 Object 中的 equals
參數:
o - 要與之比較的物件。
返回:
如果物件相等,則返回 true;否則返回 false
另請參見:
Object.hashCode(), Hashtable

hashCode

public int hashCode()

返回此描述符的雜湊碼值。該雜湊碼是描述符中每個欄位的雜湊碼的總和。名稱為 n 且值為 v 的欄位的雜湊碼是 n.toLowerCase().hashCode() ^ h。這裡的 hv 的雜湊碼,計算方式如下:

指定者:
介面 Descriptor 中的 hashCode
覆寫:
類別 Object 中的 hashCode
返回:
此物件的雜湊碼值。
另請參見:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
從類別 Object 複製的描述
返回該物件的字元串表示。通常,toString 方法會返回一個「以文本方式表示」此物件的字元串。結果應是一個簡明但易於讀懂的資訊表達式。建議所有子類別都覆寫此方法。

Object 類別的 toString 方法返回一個字元串,該字元串由類別名(物件是該類別的一個實例)、at 標記符“@”和此物件雜湊碼的無符號十六進製表示組成。換句話說,該方法返回一個字元串,它的值等於:

getClass().getName() + '@' + Integer.toHexString(hashCode())
 

覆寫:
類別 Object 中的 toString
返回:
該物件的字元串表示形式。

isValid

public boolean isValid()
如果所有欄位在給定其名稱的情況下都有合法值,則返回 true。此方法總是返回 true,但子類別可以覆寫它,以便在適當的時候返回 false。

指定者:
介面 Descriptor 中的 isValid
返回:
如果值是合法的,則返回 true。
拋出:
RuntimeOperationsException - 如果有效性檢查失敗。如果描述符無效,則該方法返回 false,但如果嘗試確定有效性失敗,則將拋出此異常。

clone

public Descriptor clone()

返回一個與此描述符相等的描述符。對返回的描述符進行的更改不影響此描述符,反之亦然。

此方法返回它調用的物件。子類別可以覆寫此方法,以便在符合條件的情況下返回另一個物件。

指定者:
介面 Descriptor 中的 clone
覆寫:
類別 Object 中的 clone
返回:
此實例的一個副本。
拋出:
RuntimeOperationsException - 如果 Names 或 Values 欄位的值為非法值。如果描述符建構由於任何原因而失敗,都將拋出此異常。
另請參見:
Cloneable

setFields

public final void setFields(String[] fieldNames,
                            Object[] fieldValues)
                     throws RuntimeOperationsException
因為此類別不可變,所以不支持此操作。如果此調用此方法會更改具有相同內容的可變描述符,則拋出包裹 UnsupportedOperationExceptionRuntimeOperationsException。否則,其行為將與可變描述符的行為相同:要麼因為非法參數而拋出異常,要麼無效。

指定者:
介面 Descriptor 中的 setFields
參數:
fieldNames - 欄位名稱的 String 陣列。陣列和陣列元素不能為 null。
fieldValues - 對應欄位值的 Object 陣列。陣列不能為 null。陣列的元素可以為 null。
拋出:
RuntimeOperationsException - 如果由於某種原因更改失敗。如果 fieldNamesfieldValues 為 null,或者陣列的長度不同,或者其中一個陣列存在非法值,則包裹的異常為 IllegalArgumentException。如果描述符不可變,且調用將更改其內容,則包裹的異常為 UnsupportedOperationException
另請參見:
Descriptor.getFields()

setField

public final void setField(String fieldName,
                           Object fieldValue)
                    throws RuntimeOperationsException
因為此類別不可變,所以不支持此操作。如果此調用此方法會更改具有相同內容的可變描述符,則拋出包裹 UnsupportedOperationExceptionRuntimeOperationsException。否則,其行為將與可變描述符的行為相同:要麼因為非法參數而拋出異常,要麼無效。

指定者:
介面 Descriptor 中的 setField
參數:
fieldName - 要設置的欄位的名稱。不能為 null 或空。
fieldValue - 針對該欄位名稱所設置的欄位值。如果 null 是欄位的有效值,則可以為 null。
拋出:
RuntimeOperationsException - 如果欄位名或欄位值不合法(包裹的異常為 IllegalArgumentException);或者描述符不可變(包裹的異常為 UnsupportedOperationException)。

removeField

public final void removeField(String fieldName)
從描述符移除欄位。

指定者:
介面 Descriptor 中的 removeField
參數:
fieldName - 要移除的欄位的 String 名稱。如果欄位名不合法或找不到欄位,則不拋出任何異常。
拋出:
RuntimeOperationsException - 如果存在給定名稱的欄位且描述符不可變。包裹的異常將是一個 UnsupportedOperationException

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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