- java.lang.Object
-
- javax.naming.directory.BasicAttribute
-
- All Implemented Interfaces:
-
Serializable,Cloneable,Attribute
public class BasicAttribute extends Object implements Attribute
这个类提供了Attribute接口的基本实现。此实现不支持架构方法
getAttributeDefinition()和getAttributeSyntaxDefinition()。 他们只是抛出OperationNotSupportedException。BasicAttribute子类应支持这些方法。默认情况下,
BasicAttribute类使用Object.equals()在测试相等性或搜索值时确定属性值的相等性, 除非该值为数组。 对于数组,使用Object.equals()检查数组的每个元素。BasicAttribute子类可以通过覆盖这种使用模式有意义的方法进行类似的等式检查来利用模式信息。 类似地,默认情况下,BasicAttribute类返回传递给其构造函数和/或使用add / remove方法进行操作的值。BasicAttribute子类可以覆盖get()和getAll()以从目录动态获取值(或直接实现Attribute接口,而不是子类化BasicAttribute)。请注意,对
BasicAttribute更新(如添加或删除值)不会影响目录中属性的相应表示形式。 目录的更新只能使用DirContext界面中的操作进行。BasicAttribute实例与并发多线程访问不同步。 尝试访问和修改BasicAttribute多个线程应锁定该对象。- 从以下版本开始:
- 1.3
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 BasicAttribute(String id)构造无值的无序属性的新实例。BasicAttribute(String id, boolean ordered)构造一个没有值的可能有序属性的新实例。BasicAttribute(String id, Object value)使用单个值构造无序属性的新实例。BasicAttribute(String id, Object value, boolean ordered)构造具有单个值的可能有序属性的新实例。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voidadd(int ix, Object attrVal)向属性值的有序列表添加属性值。booleanadd(Object attrVal)向此属性添加一个新值。voidclear()从此属性中删除所有值。Objectclone()创建并返回此对象的副本。booleancontains(Object attrVal)确定值是否在此属性中。booleanequals(Object obj)确定obj是否等于此属性。Objectget()检索此属性值之一。Objectget(int ix)从有序的属性值列表中检索属性值。NamingEnumeration<?>getAll()检索此属性值的枚举。DirContextgetAttributeDefinition()检索此属性的模式定义。DirContextgetAttributeSyntaxDefinition()检索与此属性相关联的语法定义。StringgetID()检索此属性的ID。inthashCode()计算此属性的哈希码。booleanisOrdered()确定此属性的值是否被排序。Objectremove(int ix)从有序的属性值列表中删除属性值。booleanremove(Object attrval)从此属性中删除指定的值。Objectset(int ix, Object attrVal)在属性值的有序列表中设置属性值。intsize()检索此属性中的值的数量。StringtoString()生成此属性的字符串表示形式。
-
-
-
构造方法详细信息
-
BasicAttribute
public BasicAttribute(String id)
构造无值的无序属性的新实例。- 参数
-
id- 属性的id。 它不能为空。
-
BasicAttribute
public BasicAttribute(String id, Object value)
使用单个值构造无序属性的新实例。- 参数
-
id- 属性的id。 它不能为空。 -
value- 属性的值。 如果为null,则将null值添加到该属性。
-
BasicAttribute
public BasicAttribute(String id, boolean ordered)
构造一个没有值的可能有序属性的新实例。- 参数
-
id- 属性的id。 它不能为空。 -
ordered- true表示属性的值将被排序; 否则为假。
-
-
方法详细信息
-
clone
public Object 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返回的对象中的字段。该方法
clone类Object执行特定克隆操作。 首先,如果此对象的类不实现接口Cloneable,则抛出CloneNotSupportedException。 请注意,所有阵列被认为是实现该接口Cloneable并且所述的返回类型clone数组类型的方法T[]是T[]其中T是任何引用或原始类型。 否则,该方法将创建该对象的类的新实例,并将其所有字段初始化为该对象的相应字段的内容,就像通过赋值一样。 这些字段的内容本身不被克隆。 因此,该方法执行该对象的“浅拷贝”,而不是“深度拷贝”操作。类
Object本身并不实现接口Cloneable,因此在类为Object的对象上调用clone方法将导致在运行时抛出异常。
-
equals
public boolean equals(Object obj)
确定obj是否等于此属性。 如果属性id,语法和值相等,则两个属性相等。 如果属性值是无序的,则添加值的顺序是无关紧要的。 如果属性值被排序,则值必须匹配的顺序。 如果obj为空,则属性为null,则返回false。当比较属性id及其值时,默认情况下使用
Object.equals(),除非值是数组。 对于数组,使用Object.equals()检查数组的每个元素。 一个子类可以覆盖它,以利用模式语法信息和匹配规则,这些规则定义了两个属性相等的含义。 子类如何使用模式信息是由子类确定的。 如果一个子类覆盖了equals(),它也应该覆盖hashCode(),使得两个相等的属性具有相同的哈希码。- 重写:
-
equals在Object - 参数
-
obj- 可能需要检查的空对象。 - 结果
- 如果obj等于此属性,则为true; 否则为假。
- 另请参见:
-
hashCode(),contains(java.lang.Object)
-
hashCode
public int hashCode()
计算此属性的哈希码。通过添加属性id的哈希码和除了数组的值之外的所有值的值来计算哈希码。 对于数组,数组的每个元素的哈希码相加。 如果一个子类覆盖
hashCode(),它也应该覆盖equals(),以使两个相等的属性具有相同的哈希码。- 重写:
-
hashCode在Object - 结果
- 一个表示此属性的哈希码的int。
- 另请参见:
-
equals(java.lang.Object)
-
toString
public String toString()
生成此属性的字符串表示形式。 该字符串由属性的id及其值组成。 此字符串用于调试,而不是以编程方式解释。
-
getAll
public NamingEnumeration<?> getAll() throws NamingException
检索此属性值的枚举。默认情况下,返回的值是传递给构造函数和/或使用add / replace / remove方法操作的值。 一个子类可以覆盖此值,从目录中动态地检索这些值。
- Specified by:
-
getAll在接口Attribute - 结果
- 属性值的非空枚举。 枚举的每个元素都是可能为空的Object。 对象的类是属性值的类。 如果属性的值为null,则该元素为null。 如果属性具有零值,则返回一个空的枚举。
- 异常
-
NamingException- 如果在检索值时遇到命名异常。 - 另请参见:
-
Attribute.isOrdered()
-
get
public Object get() throws NamingException
检索此属性值之一。默认情况下,返回的值是传递给构造函数和/或使用add / replace / remove方法进行操作的值之一。 子类可以覆盖此值,以从目录动态检索该值。
- Specified by:
-
get在接口Attribute - 结果
- 表示属性值之一的可能为null的对象。 如果属性的值为null,则为null。
- 异常
-
NamingException- 如果在检索该值时遇到命名异常。
-
contains
public boolean contains(Object attrVal)
确定值是否在此属性中。默认情况下,
Object.equals()与attrVal与此属性的值进行比较时使用,除非attrVal是数组。 对于阵列,使用Object.equals()检查阵列的每个元素。 子类可以使用模式信息来确定相等性。- Specified by:
-
contains在接口Attribute - 参数
-
attrVal- 可能要检查的空值。 如果为null,请检查属性是否具有值为null的属性值。 - 结果
- 如果attrVal是此属性的值之一,则为true; 否则为假。
- 另请参见:
-
Object.equals(java.lang.Object),equals(java.lang.Object)
-
add
public boolean add(Object attrVal)
向此属性添加一个新值。默认情况下,
Object.equals()比较当使用attrVal与此属性的值时除外attrVal是一个数组。 对于数组,使用Object.equals()检查数组的每个元素。 子类可以使用模式信息来确定相等性。
-
remove
public boolean remove(Object attrval)
从此属性中删除指定的值。默认情况下,
Object.equals()与attrVal与此属性值进行比较时使用,除非attrVal是数组。 对于数组,使用Object.equals()检查数组的每个元素。 子类可以使用模式信息来确定相等性。
-
isOrdered
public boolean isOrdered()
描述从接口Attribute复制确定此属性的值是否被排序。 如果一个属性的值被排序,则允许重复的值。 如果一个属性的值是无序的,它们以任何顺序呈现,并且没有重复的值。- Specified by:
-
isOrdered在接口Attribute - 结果
- 如果此属性的值被排序,则为true; 否则为假。
- 另请参见:
-
Attribute.get(int),Attribute.remove(int),Attribute.add(int, java.lang.Object),Attribute.set(int, java.lang.Object)
-
get
public Object get(int ix) throws NamingException
描述从接口Attribute复制从有序的属性值列表中检索属性值。 此方法返回属性值列表的ix索引值。 如果属性值是无序的,则此方法返回恰好在该索引处的值。- Specified by:
-
get在接口Attribute - 参数
-
ix- 属性值有序列表中的值的索引。0 <= ix < size()。 - 结果
-
索引号为
ix的可能为null的属性值; 如果属性值为null,则为null。 - 异常
-
NamingException- 如果在检索该值时遇到命名异常。
-
remove
public Object remove(int ix)
描述从接口Attribute复制从有序的属性值列表中删除属性值。 此方法将删除属性值列表的ix索引处的值。 如果属性值是无序的,则此方法将删除恰好在该索引处的值。 位于大于ix指数的数值向上移动到列表的前面(并且它们的指数减1)。
-
add
public void add(int ix, Object attrVal)说明从界面Attribute复制向属性值的有序列表添加属性值。 此方法将attrVal添加到索引号为ix的属性值列表。 位于或大于ix指数的值向下移动到列表的末尾(并且它们的指数增加1)。 如果属性值无序且已经有attrVal,则抛出IllegalStateException。
-
set
public Object set(int ix, Object attrVal)
描述从接口Attribute复制在属性值的有序列表中设置属性值。 该方法将属性值列表的ix索引值设置为attrVal。 旧值被删除。 如果属性值无序,则该方法将该索引处的值设置为attrVal,除非attrVal是其中一个值。 在这种情况下,抛出IllegalStateException。
-
getAttributeSyntaxDefinition
public DirContext getAttributeSyntaxDefinition() throws NamingException
检索与此属性相关联的语法定义。这种方法默认抛出OperationNotSupportedException。 子类应该覆盖此方法,如果它支持模式。
- Specified by:
-
getAttributeSyntaxDefinition在接口Attribute - 结果
- 属性的语法定义。 如果实现支持模式,则该值为空,但该特定属性没有任何模式信息。
- 异常
-
OperationNotSupportedException- 如果不支持获取模式。 -
NamingException- 如果获取模式时发生命名异常。
-
getAttributeDefinition
public DirContext getAttributeDefinition() throws NamingException
检索此属性的模式定义。这种方法默认抛出OperationNotSupportedException。 子类应该覆盖此方法,如果它支持模式。
- Specified by:
-
getAttributeDefinition在接口Attribute - 结果
- 此属性的模式定义。 如果实现支持模式,则该值为空,但该特定属性没有任何模式信息。
- 异常
-
OperationNotSupportedException- 如果不支持获取模式。 -
NamingException- If a naming exception occurs while getting the schema.
-
-