public class DescriptorSupport extends Object implements Descriptor
描述符由字段集合组成。 每个字段都是fieldname = fieldvalue格式。 字段名称不区分大小写,字段值将保留。
所有字段名称和值都不是预定义的。 任何程序都可以定义和添加新的字段。 已经为ModelMBeanInfo,ModelMBeanAttributeInfo,ModelMBeanConstructorInfo,ModelMBeanNotificationInfo,ModelMBeanOperationInfo和ModelMBean类的实现和支持的一致性预定义了一些字段。
这个类的serialVersionUID的是-6292969195866300415L
。
Constructor and Description |
---|
DescriptorSupport()
描述符默认构造函数。
|
DescriptorSupport(DescriptorSupport inDescr)
描述符构造函数将描述符作为参数。
|
DescriptorSupport(int initNumFields)
描述符构造函数
|
DescriptorSupport(String... fields)
构造器采用
fieldName = fieldValue格式的字段。
|
DescriptorSupport(String inStr)
描述符构造函数采用XML字符串。
|
DescriptorSupport(String[] fieldNames, Object[] fieldValues)
构造器获取字段名称和字段值。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
返回与描述符重复的新描述符。
|
boolean |
equals(Object o)
将此描述符与给定对象进行比较。
|
String[] |
getFieldNames()
返回描述符中的所有字段名。
|
String[] |
getFields()
以字符串数组的形式返回此描述符中包含的所有字段。
|
Object |
getFieldValue(String fieldName)
返回特定字段名称的值,如果该名称没有值,则返回null。
|
Object[] |
getFieldValues(String... fieldNames)
将描述符中的所有字段值作为对象数组返回。
|
int |
hashCode()
返回此描述符的哈希码值。
|
boolean |
isValid()
如果所有字段都具有给定名称的合法值,则返回true。
|
void |
removeField(String fieldName)
从描述符中删除一个字段。
|
void |
setField(String fieldName, Object fieldValue)
设置特定字段名称的值。
|
void |
setFields(String[] fieldNames, Object[] fieldValues)
将字段名称数组中的所有字段设置为字段值数组中具有相同索引的新值。
|
String |
toString()
返回表示描述符的人类可读字符串。
|
String |
toXMLString()
返回表示描述符的XML字符串。
|
public DescriptorSupport()
public DescriptorSupport(int initNumFields) throws MBeanException, RuntimeOperationsException
initNumFields
- 映射存储描述符字段的初始容量。
RuntimeOperationsException
- 对于initNumFields(<= 0)的非法值
MBeanException
- 包装分布式通信异常。
public DescriptorSupport(DescriptorSupport inDescr)
inDescr
- 用于初始化构造的描述符的描述符。
如果它为空或不包含描述符字段,则将创建一个空的描述符。
public DescriptorSupport(String inStr) throws MBeanException, RuntimeOperationsException, XMLParseException
描述符构造函数采用XML字符串。
未定义XML字符串的格式,但是实现必须确保现有描述符上的toXMLString()
返回的字符串可用于使用此构造函数实例化等效的描述符。
在此实现中,所有字段值将被创建为字符串。 如果字段值不是字符串,程序员将不得不正确地重置或转换这些字段。
inStr
- 用于填充此描述符的XML格式的字符串。
该格式未定义,但任何实现必须确保现有描述符上的方法toXMLString
返回的字符串可用于在使用此构造函数实例化时实例化等效描述符。
RuntimeOperationsException
- 如果传入参数中的String inStr为null
XMLParseException
- 解析输入字符串时的XML解析问题
MBeanException
- 包装分布式通信异常。
public DescriptorSupport(String[] fieldNames, Object[] fieldValues) throws RuntimeOperationsException
fieldNames
- 字符串数组的字段名称。
此数组的任何元素都不能为空。
fieldValues
- 相应字段值的对象数组。
数组的元素可以为空。
fieldValue
必须对fieldName
有效(如方法isValid
所定义)
注意:参数的数组大小应该匹配。 如果两个数组都为空,则创建一个空描述符。
RuntimeOperationsException
- 用于字段名称或字段值的非法值。
阵列长度必须相等。
如果由于任何原因描述符构造失败,将抛出此异常。
public DescriptorSupport(String... fields)
fields
- 每个元素包含字段名称和值的字符串数组。
如果此数组为空或为空,则将执行默认构造函数。
空字符串或空字符串将被忽略。
所有字段值应为字符串。 如果字段值不是字符串,程序员将不得不正确地重置或转换这些字段。
注意:每个字符串的格式应为fieldName = fieldValue 。 字段名称以第=
字符结尾; 例如,如果字符串为a=b=c
则字段名称为a
,其值为b=c
。
RuntimeOperationsException
- 用于字段名称或字段值的非法值。
该字段必须包含“=”。
“= fieldValue”,“fieldName”和“fieldValue”是非法的。
FieldName不能为空。
“fieldName =”将导致该值为null。
如果由于任何原因描述符构造失败,将抛出此异常。
public Object getFieldValue(String fieldName) throws RuntimeOperationsException
Descriptor
复制
getFieldValue
在界面
Descriptor
fieldName
- 字段名称。
RuntimeOperationsException
- 如果字段名称是非法的。
public void setField(String fieldName, Object fieldValue) throws RuntimeOperationsException
Descriptor
复制
设置特定字段名称的值。 这将修改现有字段或添加新字段。
字段值在设置之前将被验证。 如果它无效,那么将抛出异常。 有效性的含义取决于描述符的实现。
setField
在界面
Descriptor
fieldName
- 要设置的字段名称。
不能为null或为空。
fieldValue
- 要为字段名称设置的字段值。
如果该值是该字段的有效值,则可以为null。
RuntimeOperationsException
- 如果字段名称或字段值是非法的(包装异常是IllegalArgumentException
);
或者描述符是不可变的(包装异常是UnsupportedOperationException
)。
public String[] getFields()
Descriptor
复制
getFields
在界面
Descriptor
Descriptor.setFields(java.lang.String[], java.lang.Object[])
public String[] getFieldNames()
Descriptor
复制
getFieldNames
在界面
Descriptor
public Object[] getFieldValues(String... fieldNames)
Descriptor
复制
fieldNames
String数组参数的顺序相同。
getFieldValues
在界面
Descriptor
fieldNames
- 应返回值的字段名称的字符串数组。
如果数组为空,那么将返回一个空数组。
如果数组为空,那么将返回所有值,就像参数是由Descriptor.getFieldNames()
返回的数组一样 。
如果数组中的字段名称不存在,包括其为空或空字符串的情况,那么返回的匹配数组元素将返回null。
fieldNames
的列表为空,您将获得一个空数组。
public void setFields(String[] fieldNames, Object[] fieldValues) throws RuntimeOperationsException
Descriptor
复制
将字段名称数组中的所有字段设置为字段值数组中具有相同索引的新值。 阵列大小必须匹配。
字段值在设置之前将被验证。 如果它无效,那么将抛出异常。 如果数组为空,那么没有更改将生效。
setFields
在界面
Descriptor
fieldNames
- 字符串数组的字段名称。
数组和数组元素不能为空。
fieldValues
- 相应字段值的对象数组。
数组不能为null。
数组的元素可以为空。
RuntimeOperationsException
- 如果由于任何原因更改失败。
如果fieldNames
或fieldValues
为空,或者数组的长度不同,或者其中一个数组中有非法值,则包装的异常为IllegalArgumentException
。
包装的异常是UnsupportedOperationException
如果描述符是不可变的,而调用将更改其内容。
Descriptor.getFields()
public Object clone() throws RuntimeOperationsException
clone
在界面
Descriptor
clone
在
Object
RuntimeOperationsException
- 对于字段名称或字段值的非法值。
如果由于任何原因描述符构造失败,将抛出此异常。
Cloneable
public void removeField(String fieldName)
Descriptor
复制
removeField
在界面
Descriptor
fieldName
- 要删除的字段的字符串名称。
如果字段名称是非法的或没有找到该字段,则不会抛出异常。
public boolean equals(Object o)
Arrays.deepEquals
必须返回true。 Object.equals(Object)
必须返回true。 equals
在界面
Descriptor
equals
在
Object
o
- 要比较的对象。
true
如果对象是一样的;
false
否则。
Object.hashCode()
, HashMap
public int hashCode()
返回此描述符的哈希码值。 哈希码被计算为描述符中每个字段的哈希码的和。 名称为n
,值为v
的字段的哈希码为n.toLowerCase().hashCode() ^ h
。 这里h
是哈希码v
,计算如下:
v
为null,则h
为0。 v
是基本类型数组然后h
使用的适当重载来计算的java.util.Arrays.hashCode
。 v
是一个对象数组然后h
使用计算Arrays.deepHashCode
。 h
是v.hashCode()
。 hashCode
在界面
Descriptor
hashCode
在类别
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean isValid() throws RuntimeOperationsException
此实现不支持与目录或查找服务进行互操作。 因此,符合规范,不会在“导出”字段上进行检查。
否则,此实现返回false,如果:
isValid
在界面
Descriptor
RuntimeOperationsException
- 如果由于任何原因有效性检查失败,将抛出此异常。
public String toXMLString()
返回表示描述符的XML字符串。
该格式未定义,但是实现必须确保使用构造函数DescriptorSupport(String inStr)
实例化时可以使用此方法返回的字符串来构建等效描述符 。
不是String对象的字段将在其上调用toString()来创建该值。 该值将括在括号中。 不能保证您可以重建这些对象,除非它们被专门设置为以有意义的格式支持toString(),并具有以相同格式接受String的匹配构造函数。
如果描述符为空,则返回以下String:<Descriptor> </ Descriptor>
RuntimeOperationsException
- 用于字段名称或字段值的非法值。
如果由于任何原因XML格式的字符串构造失败,将抛出此异常。
public String toString()
toString
在类别
Object
RuntimeOperationsException
- 用于字段名称或字段值的非法值。
如果描述符字符串由于任何原因失败,将抛出此异常。