- 所有已实现的接口:
-
Serializable
,Cloneable
,Attribute
Attribute
接口的基本实现。
此实现不支持模式方法getAttributeDefinition()
和getAttributeSyntaxDefinition()
。它们只是抛出OperationNotSupportedException
。如果子类支持这些方法,则应覆盖BasicAttribute
中的这些方法。
BasicAttribute
类默认使用Object.equals()
来确定属性值的相等性,用于测试相等性或搜索值,除非该值是数组。对于数组,将使用Object.equals()
检查数组的每个元素。如果子类的BasicAttribute
在进行类似相等性检查时使用模式信息,则可以覆盖相关方法。同样,BasicAttribute
类默认返回传递给其构造函数和/或使用添加/删除方法操作的值。子类可以覆盖get()
和getAll()
方法,从目录动态获取值(或直接实现Attribute
接口,而不是继承BasicAttribute
)。
请注意,对BasicAttribute
的更新(例如添加或删除值)不会影响目录中属性的相应表示。只能使用DirContext
接口中的操作来影响目录的更新。
BasicAttribute
实例不会针对并发多线程访问进行同步。试图访问和修改BasicAttribute
的多个线程应锁定该对象。
- 自:
- 1.3
- 参见:
-
Field Summary
-
Constructor Summary
ConstructorDescriptionBasicAttribute
(String id) 构造一个新的无序属性实例,没有值。BasicAttribute
(String id, boolean ordered) 构造一个新的可能有序的属性实例,没有值。BasicAttribute
(String id, Object value) 构造一个新的无序属性实例,具有单个值。BasicAttribute
(String id, Object value, boolean ordered) 构造一个新的可能有序的属性实例,具有单个值。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
将属性值添加到属性值的有序列表中。boolean
向此属性添加一个新值。void
clear()
从此属性中删除所有值。clone()
创建并返回此对象的副本。boolean
确定一个值是否在此属性中。boolean
确定obj是否等于此属性。get()
检索此属性的一个值。get
(int ix) 从属性值的有序列表中检索属性值。getAll()
检索此属性值的枚举。检索此属性的模式定义。检索与此属性关联的语法定义。getID()
检索此属性的ID。int
hashCode()
计算此属性的哈希码。boolean
确定此属性的值是否有序。remove
(int ix) 从属性值的有序列表中删除属性值。boolean
从此属性中删除指定的值。在属性值的有序列表中设置属性值。int
size()
检索此属性中的值数量。toString()
生成此属性的字符串表示。
-
Field Details
-
attrID
持有属性的ID。由公共构造函数初始化,不能为null,除非覆盖了使用attrID的BasicAttribute中的方法。 -
values
持有属性的值。由公共构造函数初始化,不能为null,除非覆盖了使用值的BasicAttribute中的方法。 -
ordered
protected boolean ordered记录此属性的值是否有序的标志。
-
-
Constructor Details
-
BasicAttribute
构造一个新的无序属性实例,没有值。- 参数:
-
id
- 属性的ID。不能为null。
-
BasicAttribute
构造一个新的无序属性实例,具有单个值。- 参数:
-
id
- 属性的ID。不能为null。 -
value
- 属性的值。如果为null,则将null值添加到属性中。
-
BasicAttribute
构造一个新的可能有序的属性实例,没有值。- 参数:
-
id
- 属性的ID。不能为null。 -
ordered
- true表示属性的值将被排序;否则为false。
-
BasicAttribute
构造一个新的可能有序的属性实例,具有单个值。- 参数:
-
id
- 属性的ID。不能为null。 -
value
- 属性的值。如果为null,则将null值添加到属性中。 -
ordered
- true表示属性的值将被排序;否则为false。
-
-
Method Details
-
clone
从类中复制的描述:Object
创建并返回此对象的副本。"副本"的确切含义可能取决于对象的类。一般意图是,对于任何对象x
,表达式:x.clone() != x
x.clone().getClass() == x.getClass()
true
,但这些不是绝对要求。虽然通常情况下:x.clone().equals(x)
true
,但这不是绝对要求。按照惯例,应通过调用
super.clone
来获取返回的对象。如果一个类及其所有超类(除了Object
)遵循此约定,那么x.clone().getClass() == x.getClass()
。按照惯例,此方法返回的对象应独立于正在克隆的对象。为了实现这种独立性,可能需要修改通过
super.clone
返回的对象的一个或多个字段,然后再返回它。通常,这意味着复制组成对象内部“深层结构”的任何可变对象,并将对这些对象的引用替换为对副本的引用。如果一个类只包含原始字段或对不可变对象的引用,则通常情况下,通过super.clone
返回的对象中的字段不需要被修改。 -
equals
确定obj是否等于此属性。如果两个属性的属性ID、语法和值相等,则两个属性相等。如果属性值是无序的,则添加值的顺序无关紧要。如果属性值是有序的,则值的顺序必须匹配。如果obj为null或不是Attribute,则返回false。默认情况下,比较属性ID及其值时使用
Object.equals()
,除非值是数组。对于数组,将使用Object.equals()
检查数组的每个元素。子类可以覆盖此方法以利用模式语法信息和匹配规则,这些规则定义了两个属性相等的含义。子类如何以及是否使用模式信息由子类确定。如果子类覆盖了equals()
,则还应该覆盖hashCode()
,以便相等的两个属性具有相同的哈希码。 -
hashCode
public int hashCode() -
toString
生成此属性的字符串表示。该字符串由属性的ID和其值组成。此字符串用于调试,不应被程序化解释。 -
getAll
检索此属性值的枚举。默认情况下,返回的值是传递给构造函数和/或使用add/replace/remove方法操作的值。子类可以重写此方法,以动态地从目录中检索值。
- 指定者:
-
getAll
在接口Attribute
中 - 返回:
- 属性值的非空枚举。枚举的每个元素都是可能为null的对象。对象的类是属性值的类。如果属性没有值,则返回空枚举。
- 抛出:
-
NamingException
- 检索值时遇到命名异常。 - 另请参见:
-
get
检索此属性值的一个值。默认情况下,返回的值是传递给构造函数和/或使用add/replace/remove方法操作的值之一。子类可以重写此方法,以动态地从目录中检索值。
- 指定者:
-
get
在接口Attribute
中 - 返回:
- 代表属性值之一的可能为null的对象。如果属性值为null,则为null。
- 抛出:
-
NamingException
- 检索值时遇到命名异常。
-
size
public int size()从接口复制的描述:Attribute
检索此属性中值的数量。 -
getID
从接口复制的描述:Attribute
检索此属性的ID。 -
contains
确定一个值是否在此属性中。默认情况下,比较
attrVal
与此属性的值时使用Object.equals()
,除非attrVal
是数组。对于数组,将使用Object.equals()
检查数组的每个元素。子类可以使用模式信息来确定相等性。 -
add
向此属性添加一个新值。默认情况下,比较
attrVal
与此属性的值时使用Object.equals()
,除非attrVal
是数组。对于数组,将使用Object.equals()
检查数组的每个元素。子类可以使用模式信息来确定相等性。 -
remove
从此属性中删除指定的值。默认情况下,比较
attrVal
与此属性的值时使用Object.equals()
,除非attrVal
是数组。对于数组,将使用Object.equals()
检查数组的每个元素。子类可以使用模式信息来确定相等性。 -
clear
public void clear()从接口复制的描述:Attribute
从此属性中删除所有值。 -
isOrdered
public boolean isOrdered()从接口复制的描述:Attribute
确定此属性的值是否有序。如果属性的值是有序的,则允许重复值。如果属性的值是无序的,则以任何顺序呈现它们,并且没有重复值。 -
get
从接口复制的描述:Attribute
从属性值的有序列表中检索属性值。此方法返回列表中ix
索引处的值。如果属性值是无序的,则此方法返回该索引处的值。- 指定者:
-
get
在接口Attribute
中 - 参数:
-
ix
- 有序属性值列表中值的索引。0 <= ix < size()
。 - 返回:
-
在索引
ix
处可能为null的属性值;如果属性值为null,则为null。 - 抛出:
-
NamingException
- 检索值时遇到命名异常。
-
remove
从接口复制的描述:Attribute
从属性值的有序列表中删除属性值。此方法删除列表中ix
索引处的值。如果属性值是无序的,则此方法删除该索引处的值。位于索引大于ix
的值向列表前移(其索引减一)。 -
add
从接口复制的描述:Attribute
向属性值的有序列表中添加属性值。此方法将attrVal
添加到属性值列表的索引ix
处。位于索引为ix
或更大的位置的值向列表末尾移动(其索引加一)。如果属性值是无序的并且已经有attrVal
,则抛出IllegalStateException
。 -
set
从接口复制的描述:Attribute
在属性值有序列表中设置属性值。此方法将属性值列表中索引为ix
的值设置为attrVal
。旧值将被删除。如果属性值是无序的,则此方法将在该索引处的值设置为attrVal
,除非attrVal
已经是这些值之一。在这种情况下,将抛出IllegalStateException
。 -
getAttributeSyntaxDefinition
检索与此属性关联的语法定义。默认情况下,此方法会抛出OperationNotSupportedException。如果支持模式,则子类应该重写此方法。
- 指定者:
-
getAttributeSyntaxDefinition
在接口Attribute
中 - 返回:
- 属性的语法定义。如果实现支持模式但此特定属性没有任何模式信息,则为null。
- 抛出:
-
OperationNotSupportedException
- 如果不支持获取模式。 -
NamingException
- 在获取模式时发生命名异常。
-
getAttributeDefinition
检索此属性的模式定义。默认情况下,此方法会抛出OperationNotSupportedException。如果支持模式,则子类应该重写此方法。
- 指定者:
-
getAttributeDefinition
在接口Attribute
中 - 返回:
- 此属性的模式定义。如果实现支持模式但此特定属性没有任何模式信息,则为null。
- 抛出:
-
OperationNotSupportedException
- 如果不支持获取模式。 -
NamingException
- 在获取模式时发生命名异常。
-