public class ImmutableDescriptor extends Object implements Descriptor
Modifier and Type | Field and Description |
---|---|
static ImmutableDescriptor |
EMPTY_DESCRIPTOR
空描述符。
|
Constructor and Description |
---|
ImmutableDescriptor(Map<String,?> fields)
构造一个字段的名称和值的描述符,该字段的名称和值是给定的Map的键和值。
|
ImmutableDescriptor(String... fields)
构造一个包含给定字段的描述符。
|
ImmutableDescriptor(String[] fieldNames, Object[] fieldValues)
构造一个包含给定字段和值的描述符。
|
Modifier and Type | Method and Description |
---|---|
Descriptor |
clone()
返回一个与此描述符相等的描述符。
|
boolean |
equals(Object o)
将此描述符与给定对象进行比较。
|
String[] |
getFieldNames()
返回描述符中的所有字段名称。
|
String[] |
getFields()
返回包含在该描述符中的字段数组中的所有字段。
|
Object |
getFieldValue(String fieldName)
返回一个特定字段名的值,如果没有该名称的值,则为。
|
Object[] |
getFieldValues(String... fieldNames)
返回在描述符中的所有字段值作为一个对象数组。
|
int |
hashCode()
返回此描述符的哈希代码值。
|
boolean |
isValid()
如果所有字段都具有给定名称的合法值,则返回真值。
|
void |
removeField(String fieldName)
从描述符中移除字段。
|
void |
setField(String fieldName, Object fieldValue)
此操作不支持,因为这个类是不可变的。
|
void |
setFields(String[] fieldNames, Object[] fieldValues)
此操作不支持,因为这个类是不可变的。
|
String |
toString()
返回对象的字符串表示形式。
|
static ImmutableDescriptor |
union(Descriptor... descriptors)
返回一个
ImmutableDescriptor 其内容是给定的描述符的联盟。
|
public static final ImmutableDescriptor EMPTY_DESCRIPTOR
public ImmutableDescriptor(String[] fieldNames, Object[] fieldValues)
IllegalArgumentException
如果数组为空,或者如果数组有不同的大小,或者如果一个字段名称为空或空的,或者相同的字段名中出现一次以上。
public ImmutableDescriptor(String... fields)
fieldName=fieldValue
。字段名称结束了第一
=
特征;例如,如果字符串
a=b=c
然后字段名称是
a
及其价值是
b=c
。
IllegalArgumentException
如果参数为空,或者如果一个字段名称是空的,或者相同的字段名出现不止一次,或者如果一个字符串不包含
=
字符。
public ImmutableDescriptor(Map<String,?> fields)
构造一个字段的名称和值的描述符,该字段的名称和值是给定的Map的键和值。
IllegalArgumentException
如果参数为空,或者如果一个字段名称为空或空的,或者相同的字段名不止一次出现(可能因为字段名称不区分大小写)。
public static ImmutableDescriptor union(Descriptor... descriptors)
返回一个ImmutableDescriptor
其内容是给定的描述符的联盟。出现在任何一个描述符中的每一个字段名称将出现在结果与它具有的值时,该方法被称为。任何的描述,后来的变化不影响immutabledescriptor回到这里。
在最简单的情况下,只有一个描述符并返回ImmutableDescriptor
是复制它的领域在这个方法被调用的时候:
a something()描述符;immutabledescriptor复制= immutabledescriptor联盟(D);
descriptors
要结合描述符。任何的描述符都可以是空的,在这种情况下,它被跳过。
ImmutableDescriptor
是给定的描述符的联盟。返回的对象可能会是一个immutabledescriptor包含所有必需的字段是一个输入参数相同。
IllegalArgumentException
-如果两个描述符包含相同的字段名称不同的关联值。原始数组的值被认为是相同的,如果他们是相同的类型具有相同的元素。对象数组的值返回true,如果
Arrays.deepEquals(Object[],Object[])
是相同的。
public final Object getFieldValue(String fieldName)
Descriptor
getFieldValue
接口
Descriptor
fieldName
的字段名称。
public final String[] getFields()
Descriptor
getFields
接口
Descriptor
Descriptor.setFields(java.lang.String[], java.lang.Object[])
public final Object[] getFieldValues(String... fieldNames)
Descriptor
fieldNames
字符串数组参数。
getFieldValues
接口
Descriptor
fieldNames
-字段的名称,该值应返回的字符串数组。如果数组是空的,那么将返回一个空数组。如果数组为空然后所有值将返回,如果参数是由
Descriptor.getFieldNames()
返回的数组。如果数组中的字段名不存在,包括它为空或空字符串的情况,则返回匹配数组元素返回的空值。
fieldNames
列表是空的,你会得到一个空数组。
public final String[] getFieldNames()
Descriptor
getFieldNames
接口
Descriptor
public boolean equals(Object o)
Arrays.deepEquals(Object[],Object[])
必须返回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
空然后h
0。v
是原始数组然后h
是使用适当的超载java.util.Arrays.hashCode
计算。v
是对象数组然后h
计算使用Arrays.deepHashCode(Object[])
。h
是v.hashCode()
。hashCode
接口
Descriptor
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString()
Object
toString
方法返回一个字符串,“以文本方式表示”这个对象。其结果应该是一个简洁,但翔实的代表性,是一个容易阅读的人。建议所有子类都重写此方法。
Object
类的toString
方法返回一个包含该类的对象是一个实例的名称字符串的符号` @
',和符号进制表示的对象的哈希码。换句话说,此方法返回一个等于值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
public boolean isValid()
isValid
接口
Descriptor
RuntimeOperationsException
如果有效性检查失败。如果描述符无效,则返回错误,但如果试图确定有效性失败,则抛出此异常。
public Descriptor clone()
返回一个与此描述符相等的描述符。返回的描述符的更改将不会对这个描述符产生影响,反之亦然。
此方法返回被调用的对象。子类可以重写它以返回另一个对象提供的合同,尊重。
clone
接口
Descriptor
clone
方法重写,继承类
Object
RuntimeOperationsException
-非法值的字段名或字段值。如果描述符建设失败,任何原因,这个异常将被抛出。
Cloneable
public final void setFields(String[] fieldNames, Object[] fieldValues) throws RuntimeOperationsException
RuntimeOperationsException
包装
UnsupportedOperationException
抛出。否则,该行为是因为它会为一个可变的描述一样:扔因为非法参数是一个例外,或是没有效果的。
setFields
接口
Descriptor
fieldNames
-字段名称的字符串数组。数组和数组元素不能为空。
fieldValues
-相应字段对象的数组。数组不能为空。数组的元素可以为空。
RuntimeOperationsException
-如果变化没有以任何理由。包裹的例外是
IllegalArgumentException
如果
fieldNames
或
fieldValues
是无效的,或者如果数组是不同的长度,或如果有其中一个非法值。包裹的例外是
UnsupportedOperationException
如果描述符是不可变的,并能改变它的内容。
Descriptor.getFields()
public final void setField(String fieldName, Object fieldValue) throws RuntimeOperationsException
RuntimeOperationsException
包装
UnsupportedOperationException
抛出。否则,该行为是因为它会为一个可变的描述一样:扔因为非法参数是一个例外,或是没有效果的。
setField
接口
Descriptor
fieldName
-字段名称是。不能为空或空。
fieldValue
-被设置为字段名字段值。可以为空,如果这是一个字段的有效值。
RuntimeOperationsException
如果字段名或字段的值是非法的(包裹的例外是
IllegalArgumentException
);或者如果描述符是不变的(包裹的例外是
UnsupportedOperationException
)。
public final void removeField(String fieldName)
removeField
接口
Descriptor
fieldName
-场的字符串被删除。如果字段名称是非法的或未找到字段,则将不会引发异常。
RuntimeOperationsException
-如果一个字段的名字存在和描述符是不变的。包装的异常将
UnsupportedOperationException
。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.