- 所有已实现的接口:
-
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
Fields -
Constructor Summary
ConstructorsConstructorDescriptionBasicAttribute(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向此属性添加一个新值。voidclear()从此属性中删除所有值。clone()创建并返回此对象的副本。boolean确定一个值是否在此属性中。boolean确定obj是否等于此属性。get()检索此属性的一个值。get(int ix) 从属性值的有序列表中检索属性值。getAll()检索此属性值的枚举。检索此属性的模式定义。检索与此属性关联的语法定义。getID()检索此属性的ID。inthashCode()计算此属性的哈希码。boolean确定此属性的值是否有序。remove(int ix) 从属性值的有序列表中删除属性值。boolean从此属性中删除指定的值。在属性值的有序列表中设置属性值。intsize()检索此属性中的值数量。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,表达式:
将为true,并且表达式: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- 在获取模式时发生命名异常。
-