java.lang.Object javax.naming.directory.BasicAttribute
此类提供 Attribute 接口的基本实现。
此实现不支持模式方法 getAttributeDefinition() 和 getAttributeSyntaxDefinition()。它们仅抛出 OperationNotSupportedException。如果 BasicAttribute 的子类支持它们,则其应该重写这些方法。
在测试相等性或搜索值时,BasicAttribute 类默认使用 Object.equals() 确定属性值的相等性,值为数组时除外。对于数组,需要使用 Object.equals() 检查数组的每个元素。在进行类似的相等性检查时,BasicAttribute 的子类可以通过重写那些在其中使用模式具有意义的方法来利用模式信息。类似地,默认情况下 BasicAttribute 类返回传递给其构造方法和/或使用添加/移除方法进行操作的值。BasicAttribute 的子类可以重写 get() 和 getAll(),从目录动态获取值(或者直接实现 Attribute 接口,而不为 BasicAttribute 创建子类)。
注意,更新 BasicAttribute(如添加或移除值)对目录中相应的属性表示形式没有影响。只有使用 DirContext 接口中的操作才能实现对目录的更新。
BasicAttribute 实例与并发多线程访问不同步。试图访问并修改 BasicAttribute 的多个线程应该锁定对象。
字段摘要 | |
---|---|
protected String |
attrID 保存属性的 id。 |
protected boolean |
ordered 记录此属性的值是否有序的标志。 |
protected Vector<Object> |
values 保存属性的值。 |
构造方法摘要 | |
---|---|
BasicAttribute(String id) 构造一个不带值无序属性的新实例。 |
|
BasicAttribute(String id, boolean ordered) 构造一个不带值的可能为有序属性的新实例。 |
|
BasicAttribute(String id, Object value) 构造一个带有单个值的无序属性的新实例。 |
|
BasicAttribute(String id, Object value, boolean ordered) 构造一个带有单个值的可能为有序属性的新实例。 |
方法摘要 | |
---|---|
void |
add(int ix, Object attrVal) 将属性值添加到属性值的有序列表中。 |
boolean |
add(Object attrVal) 向此属性添加新值。 |
void |
clear() 从此属性移除所有值。 |
Object |
clone() 创建并返回此对象的一个副本。 |
boolean |
contains(Object attrVal) 确定值是否在此属性中。 |
boolean |
equals(Object obj) 确定 obj 是否等于此属性。 |
Object |
get() 检索此属性的其中一个值。 |
Object |
get(int ix) 从属性值的有序列表中检索属性值。 |
NamingEnumeration<?> |
getAll() 检索此属性值的枚举。 |
DirContext |
getAttributeDefinition() 检索此属性的模式定义。 |
DirContext |
getAttributeSyntaxDefinition() 检索与此属性关联的语法定义。 |
String |
getID() 检索此属性的 id。 |
int |
hashCode() 计算此属性的哈希码。 |
boolean |
isOrdered() 确定此属性的值是否是有序的。 |
Object |
remove(int ix) 从属性值的有序列表中移除属性值。 |
boolean |
remove(Object attrval) 从此属性中移除指定值。 |
Object |
set(int ix, Object attrVal) 设置属性值的有序列表中的属性值。 |
int |
size() 检索此属性中的值数。 |
String |
toString() 生成此属性的字符串表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
protected String attrID
protected transient Vector<Object> values
protected boolean ordered
构造方法详细信息 |
---|
public BasicAttribute(String id)
id
- 属性的 id。它不能为 null。
public BasicAttribute(String id, Object value)
id
- 属性的 id。它不能为 null。
value
- 属性的值。如果为 null,则向属性中添加 null 值。
public BasicAttribute(String id, boolean ordered)
id
- 属性的 id。它不能为 null。
ordered
- 为 true 表示属性值将是有序的;为 false 表示其为无序。
public BasicAttribute(String id, Object value, boolean ordered)
id
- 属性的 id。它不能为 null。
value
- 属性的值。如果为 null,则向属性中添加 null 值。
ordered
- 为 true 表示属性值将是有序的;为 false 表示其为无序。
方法详细信息 |
---|
public Object clone()
Object
复制的描述
为 true,表达式:x.clone() != x
也为 true,但这些并非必须要满足的要求。一般情况下:x.clone().getClass() == x.getClass()
为 true,但这并非必须要满足的要求。x.clone().equals(x)
按照惯例,返回的对象应该通过调用 super.clone 获得。如果一个类及其所有的超类(Object 除外)都遵守此约定,则 x.clone().getClass() == x.getClass()。
按照惯例,此方法返回的对象应该独立于该对象(正被复制的对象)。要获得此独立性,在 super.clone 返回对象之前,有必要对该对象的一个或多个字段进行修改。这通常意味着要复制包含正在被复制对象的内部“深层结构”的所有可变对象,并使用对副本的引用替换对这些对象的引用。如果一个类只包含基本字段或对不变对象的引用,那么通常不需要修改 super.clone 返回的对象中的字段。
Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意,所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我复制。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。
Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。
Cloneable
public boolean equals(Object obj)
默认情况下,在比较属性 id 及其值时使用 Object.equals(),值为数组时除外。对于数组,需要使用 Object.equals() 检查数组的每个元素。子类可以重写此方法以利用模式语法信息和匹配规则,其定义了对两个属性的相等有意义的内容。子类如何使用和是否使用模式信息由子类确定。如果子类重写 equals(),则其也应该重写 hashCode(),这样两个相等的属性才能具有相同的哈希码。
obj
- 要检查的可能为 null 的对象。
hashCode()
,
contains(java.lang.Object)
public int hashCode()
该哈希码通过将属性 id 及其所有值的哈希码相加来计算,值为数组时除外。对于数组,要加上每个数组元素的哈希码。如果子类重写 hashCode(),则其也应该重写 equals(),这样两个相等的属性才能具有相同的哈希码。
equals(java.lang.Object)
public String toString()
public NamingEnumeration<?> getAll() throws NamingException
默认情况下,返回值就是传递给构造方法的和/或使用添加/替换/移除方法对其进行操作的那些值。子类可以重写此方法以从目录动态检索值。
NamingException
- 如果检索值时遇到命名异常。
Attribute.isOrdered()
public Object get() throws NamingException
默认情况下,返回值就是传递给构造方法的和/或使用添加/替换/移除方法对其进行操作的那些值之一。子类可以重写此方法以从目录动态检索值。
NamingException
- 如果检索值时遇到命名异常。
public int size()
public String getID()
public boolean contains(Object attrVal)
默认情况下,在将 attrVal 与此属性的值相比较时使用 Object.equals(),attrVal 为数组时除外。对于数组,需要使用 Object.equals() 检查数组的每个元素。子类可以使用模式信息确定相等性。
attrVal
- 要检查的可能为 null 的值。如果为 null,则检查属性是否具有其值不为 null 的属性值。
Object.equals(java.lang.Object)
,
equals(java.lang.Object)
public boolean add(Object attrVal)
默认情况下,在将 attrVal 与此属性的值相比较时使用 Object.equals(),attrVal 为数组时除外。对于数组,需要使用 Object.equals() 检查数组的每个元素。子类可以使用模式信息确定相等性。
attrVal
- 要添加的可能为 null 的新值。如果为 null,则将 null 作为属性值添加。
public boolean remove(Object attrval)
默认情况下,在将 attrVal 与此属性的值相比较时使用 Object.equals(),attrVal 为数组时除外。对于数组,需要使用 Object.equals() 检查数组的每个元素。子类可以使用模式信息确定相等性。
attrval
- 要从此属性中移除的可能为 null 的值。如果为 null,则移除为 null 的属性值。
public void clear()
public boolean isOrdered()
Attribute
复制的描述
Attribute.get(int)
,
Attribute.remove(int)
,
Attribute.add(int, java.lang.Object)
,
Attribute.set(int, java.lang.Object)
public Object get(int ix) throws NamingException
Attribute
复制的描述
ix
- 属性值的有序列表中值的索引。0 <=
ix <
size()。
NamingException
- 如果检索值时遇到命名异常。
public Object remove(int ix)
Attribute
复制的描述
ix
- 要移除的值的索引。0 <=
ix <
size()。
public void add(int ix, Object attrVal)
Attribute
复制的描述
ix
- 要添加新值的属性值的有序列表中的索引。0 <=
ix <=
size()。
attrVal
- 要添加的可能为 null 的属性值;如果为 null,则 null 即为添加的值。
public Object set(int ix, Object attrVal)
Attribute
复制的描述
ix
- 属性值的有序列表中值的索引。0 <=
ix <
size()。
attrVal
- 要使用的可能为 null 的属性值。如果为 null,则 'null' 将替换旧值。
public DirContext getAttributeSyntaxDefinition() throws NamingException
默认情况下此方法抛出 OperationNotSupportedException。如果子类支持模式,则其应该重写此方法。
Attribute
中的
getAttributeSyntaxDefinition
OperationNotSupportedException
- 如果不支持获取模式。
NamingException
- 如果在获取模式时发生命名异常。
public DirContext getAttributeDefinition() throws NamingException
默认情况下此方法抛出 OperationNotSupportedException。如果子类支持模式,则其应该重写此方法。
Attribute
中的
getAttributeDefinition
OperationNotSupportedException
- 如果不支持获取模式。
NamingException
- 如果在获取模式时发生命名异常。