- 所有已实现的接口:
Serializable,Cloneable,Attribute
Attribute 接口的基本实现。
此实现不支持架构方法 getAttributeDefinition() 和 getAttributeSyntaxDefinition()。他们只是抛出 OperationNotSupportedException 。如果 BasicAttribute 的子类支持这些方法,它们应该覆盖它们。
BasicAttribute 类在测试相等性或搜索值时默认使用 Object.equals() 来确定属性值的相等性,当值为数组时使用 except 。对于数组,使用 Object.equals() 检查数组的每个元素。 BasicAttribute 的子类可以在执行类似的相等性检查时使用模式信息,方法是覆盖对模式的使用有意义的方法。同样,BasicAttribute 类默认返回传递给其构造函数和/或使用添加/删除方法操作的值。 BasicAttribute 的子类可以覆盖 get() 和 getAll() 以从目录动态获取值(或直接实现 Attribute 接口而不是子类化 BasicAttribute )。
请注意,对 BasicAttribute 的更新(例如添加或删除值)不会影响目录中属性的相应表示。只能使用 DirContext 接口中的操作来更新目录。
BasicAttribute 实例未针对并发多线程访问进行同步。尝试访问和修改 BasicAttribute 的多个线程应该锁定该对象。
- 自从:
- 1.3
- 参见:
-
字段摘要
字段 -
构造方法总结
构造方法构造方法描述BasicAttribute(String id) 构造一个没有值的无序属性的新实例。BasicAttribute(String id, boolean ordered) 构造一个没有值的可能有序属性的新实例。BasicAttribute(String id, Object value) 构造具有单个值的无序属性的新实例。BasicAttribute(String id, Object value, boolean ordered) 构造具有单个值的可能有序属性的新实例。 -
方法总结
修饰符和类型方法描述void将属性值添加到属性值的有序列表中。boolean向该属性添加一个新值。voidclear()从此属性中删除所有值。clone()创建并返回此对象的副本。boolean确定值是否在此属性中。boolean确定 obj 是否等于此属性。get()检索此属性的值之一。get(int ix) 从有序的属性值列表中检索属性值。getAll()检索此属性值的枚举。检索此属性的架构定义。检索与此属性关联的语法定义。getID()检索此属性的 ID。inthashCode()计算此属性的哈希码。boolean确定此属性的值是否有序。remove(int ix) 从有序的属性值列表中删除一个属性值。boolean从此属性中删除指定的值。在有序的属性值列表中设置一个属性值。intsize()检索此属性中的值数。toString()生成此属性的字符串表示形式。
-
字段详细信息
-
attrID
保存属性的 id。它由公共构造方法初始化,并且不能为空,除非 BasicAttribute 中使用 attrID 的方法已被重写。 -
values
保存属性的值。由公共构造方法初始化。不能为空,除非 BasicAttribute 中使用值的方法已被重写。 -
ordered
protected boolean ordered用于记录此属性的值是否有序的标志。
-
-
构造方法详细信息
-
BasicAttribute
构造一个没有值的无序属性的新实例。- 参数:
id- 属性的 id。它不能为空。
-
BasicAttribute
构造具有单个值的无序属性的新实例。- 参数:
id- 属性的 id。它不能为空。value- 属性值。如果为空,则将空值添加到属性。
-
BasicAttribute
构造一个没有值的可能有序属性的新实例。- 参数:
id- 属性的 id。它不能为空。ordered- true 表示属性的值将被排序;否则为假。
-
BasicAttribute
构造具有单个值的可能有序属性的新实例。- 参数:
id- 属性的 id。它不能为空。value- 属性值。如果为空,则将空值添加到属性。ordered- true 表示属性的值将被排序;否则为假。
-
-
方法详情
-
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 为空或不是属性,则返回 false。默认情况下,在比较属性 id 及其值时使用
Object.equals(),但值是数组时除外。对于数组,使用Object.equals()检查数组的每个元素。子类可以覆盖它以使用模式语法信息和匹配规则,这些规则定义了两个属性相等的含义。子类如何以及是否使用模式信息由子类决定。如果一个子类覆盖了equals(),它也应该覆盖hashCode()这样两个相同的属性具有相同的哈希码。 -
hashCode
public int hashCode()计算此属性的哈希码。散列码是通过将属性的 id 的散列码与其所有值的散列码相加计算得出的,数组值除外。对于数组,将数组中每个元素的哈希码相加。如果一个子类覆盖了
hashCode(),它也应该覆盖equals()以便两个相同的属性具有相同的哈希码。 -
toString
生成此属性的字符串表示形式。该字符串由属性的 ID 及其值组成。此字符串用于调试,而不是用于以编程方式解释。 -
getAll
检索此属性值的枚举。默认情况下,返回的值是传递给构造方法和/或使用添加/替换/删除方法操作的值。子类可以重写它以从目录中动态检索值。
- 指定者:
getAll在接口Attribute中- 返回:
- 属性值的非空枚举。枚举的每个元素都是一个可能为空的对象。对象的类是属性值的类。如果属性的值为空,则元素为空。如果该属性具有零值,则返回一个空枚举。
- 抛出:
NamingException- 如果在检索值时遇到命名异常。- 参见:
-
get
检索此属性的值之一。默认情况下,返回的值是传递给构造方法和/或使用添加/替换/删除方法操作的值之一。子类可以重写它以从目录中动态检索值。
- 指定者:
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。 - 抛出:
NamingException- 如果在检索值时遇到命名异常。
-
remove
从接口Attribute复制的描述从有序的属性值列表中删除一个属性值。此方法删除属性值列表的ix索引处的值。如果属性值是无序的,则此方法会删除恰好位于该索引处的值。位于大于ix的索引处的值将向上移动到列表的前面(并且它们的索引递减 1)。 -
add
从接口Attribute复制的描述将属性值添加到属性值的有序列表中。此方法将attrVal添加到索引ix处的属性值列表。位于或大于ix的索引处的值向下移动到列表的末尾(并且它们的索引递增 1)。如果属性值是无序的并且已经有attrVal,则抛出IllegalStateException。 -
set
从接口Attribute复制的描述在有序的属性值列表中设置一个属性值。此方法将属性值列表的ix索引处的值设置为attrVal。旧值被删除。如果属性值是无序的,则此方法会将恰好位于该索引处的值设置为attrVal,除非attrVal已经是其中一个值。在这种情况下,将抛出IllegalStateException。 -
getAttributeSyntaxDefinition
检索与此属性关联的语法定义。此方法默认抛出 OperationNotSupportedException。如果子类支持模式,则它应该重写此方法。
- 指定者:
getAttributeSyntaxDefinition在接口Attribute中- 返回:
- 属性的语法定义。如果实现支持模式但此特定属性没有任何模式信息,则为空。
- 抛出:
OperationNotSupportedException- 如果不支持获取模式。NamingException- 如果在获取架构时发生命名异常。
-
getAttributeDefinition
检索此属性的架构定义。此方法默认抛出 OperationNotSupportedException。如果子类支持模式,则它应该重写此方法。
- 指定者:
getAttributeDefinition在接口Attribute中- 返回:
- 此属性的架构定义。如果实现支持模式但此特定属性没有任何模式信息,则为空。
- 抛出:
OperationNotSupportedException- 如果不支持获取模式。NamingException- 如果在获取架构时发生命名异常。
-