java.lang.Object javax.management.ImmutableDescriptor
public class ImmutableDescriptor
不可变的描述符。
字段摘要 | |
---|---|
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 |
字段详细信息 |
---|
public static final ImmutableDescriptor EMPTY_DESCRIPTOR
构造方法详细信息 |
---|
public ImmutableDescriptor(String[] fieldNames, Object[] fieldValues)
IllegalArgumentException
- 如果数组为 null、数组的大小不同、字段名称为 null 或空,或者相同的字段名称出现多次。
public ImmutableDescriptor(String... fields)
fieldName=fieldValue
的形式。字段名称在第一个
=
字符处结束;例如,如果 String 为
a=b=c
,则字段名称为
a
且其值为
b=c
。
IllegalArgumentException
- 如果参数为 null、字段名称为空、相同字段名称出现多次或者其中一个字符串不包含
=
字符。
public ImmutableDescriptor(Map<String,?> fields)
构造一个描述符,其中字段名称和值是给定 Map 的键和值。
IllegalArgumentException
- 如果参数为 null、字段名称为 null 或空,或者相同字段名称出现多次(可能因为字段名称不区分大小写所致)。
方法详细信息 |
---|
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,则将对象数组值视为相同。
public final Object getFieldValue(String fieldName)
Descriptor
复制的描述
Descriptor
中的
getFieldValue
fieldName
- 字段名称。
public final String[] getFields()
Descriptor
复制的描述
Descriptor
中的
getFields
Descriptor.setFields(java.lang.String[], java.lang.Object[])
public final Object[] getFieldValues(String... fieldNames)
Descriptor
复制的描述
fieldNames
String 数组参数的顺序相同。
Descriptor
中的
getFieldValues
fieldNames
- 字段名称的 String 数组,应该返回这些字段的值。如果该数组为空,则将返回一个空数组。如果数组为 null,则将返回所有值,如同参数是
Descriptor.getFieldNames()
返回的数组一样。如果数组中某个字段名不存在(包括字段名为 null 或空字符串的情况),则对于要返回的匹配数组元素,将返回 null。
fieldNames
列表为空,则将得到一个空数组。
public final String[] getFieldNames()
Descriptor
复制的描述
Descriptor
中的
getFieldNames
public boolean equals(Object o)
Arrays.deepEquals(Object[],Object[])
必须返回 true。Object.equals(Object)
必须返回 true。
Descriptor
中的
equals
Object
中的
equals
o
- 要与之比较的对象。
true
;否则返回
false
。
Object.hashCode()
,
Hashtable
public int hashCode()
返回此描述符的哈希码值。该哈希码是描述符中每个字段的哈希码的总和。名称为 n
且值为 v
的字段的哈希码是 n.toLowerCase().hashCode() ^ h
。这里的 h
是 v
的哈希码,计算方式如下:
v
为 null,则 h
为 0。v
是基本类型数组,则使用 java.util.Arrays.hashCode
的适当重载形式计算 h
。v
是对象数组,则使用 Arrays.deepHashCode(Object[])
计算 h
。h
为 v.hashCode()
。
Descriptor
中的
hashCode
Object
中的
hashCode
Object.equals(java.lang.Object)
,
Hashtable
public String toString()
Object
复制的描述
toString
方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object
类的 toString
方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@
”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
public boolean isValid()
Descriptor
中的
isValid
RuntimeOperationsException
- 如果有效性检查失败。如果描述符无效,则该方法返回 false,但如果尝试确定有效性失败,则将抛出此异常。
public Descriptor clone()
返回一个与此描述符相等的描述符。对返回的描述符进行的更改不影响此描述符,反之亦然。
此方法返回它调用的对象。子类可以重写此方法,以便在符合条件的情况下返回另一个对象。
Descriptor
中的
clone
Object
中的
clone
RuntimeOperationsException
- 如果 Names 或 Values 字段的值为非法值。如果描述符构造由于任何原因而失败,都将抛出此异常。
Cloneable
public final void setFields(String[] fieldNames, Object[] fieldValues) throws RuntimeOperationsException
UnsupportedOperationException
的
RuntimeOperationsException
。否则,其行为将与可变描述符的行为相同:要么因为非法参数而抛出异常,要么无效。
Descriptor
中的
setFields
fieldNames
- 字段名称的 String 数组。数组和数组元素不能为 null。
fieldValues
- 对应字段值的 Object 数组。数组不能为 null。数组的元素可以为 null。
RuntimeOperationsException
- 如果由于某种原因更改失败。如果
fieldNames
或
fieldValues
为 null,或者数组的长度不同,或者其中一个数组存在非法值,则包装的异常为
IllegalArgumentException
。如果描述符不可变,且调用将更改其内容,则包装的异常为
UnsupportedOperationException
。
Descriptor.getFields()
public final void setField(String fieldName, Object fieldValue) throws RuntimeOperationsException
UnsupportedOperationException
的
RuntimeOperationsException
。否则,其行为将与可变描述符的行为相同:要么因为非法参数而抛出异常,要么无效。
Descriptor
中的
setField
fieldName
- 要设置的字段的名称。不能为 null 或空。
fieldValue
- 针对该字段名称所设置的字段值。如果 null 是字段的有效值,则可以为 null。
RuntimeOperationsException
- 如果字段名或字段值不合法(包装的异常为
IllegalArgumentException
);或者描述符不可变(包装的异常为
UnsupportedOperationException
)。
public final void removeField(String fieldName)
Descriptor
中的
removeField
fieldName
- 要移除的字段的 String 名称。如果字段名不合法或找不到字段,则不抛出任何异常。
RuntimeOperationsException
- 如果存在给定名称的字段且描述符不可变。包装的异常将是一个
UnsupportedOperationException
。