所有类


javax.naming.directory
类 BasicAttribute

java.lang.Object
  继承者 javax.naming.directory.BasicAttribute
所有已实现的接口:
Serializable, Cloneable, Attribute

public class BasicAttribute
   
   
   
   
   
extends Object
implements Attribute

此类提供 Attribute 接口的基本实现。

此实现不支持模式方法 getAttributeDefinition()getAttributeSyntaxDefinition()。它们仅抛出 OperationNotSupportedException。如果 BasicAttribute 的子类支持它们,则其应该重写这些方法。

在测试相等性或搜索值时,BasicAttribute 类默认使用 Object.equals() 确定属性值的相等性,值为数组时除外。对于数组,需要使用 Object.equals() 检查数组的每个元素。在进行类似的相等性检查时,BasicAttribute 的子类可以通过重写那些在其中使用模式具有意义的方法来利用模式信息。类似地,默认情况下 BasicAttribute 类返回传递给其构造方法和/或使用添加/移除方法进行操作的值。BasicAttribute 的子类可以重写 get()getAll(),从目录动态获取值(或者直接实现 Attribute 接口,而不为 BasicAttribute 创建子类)。

注意,更新 BasicAttribute(如添加或移除值)对目录中相应的属性表示形式没有影响。只有使用 DirContext 接口中的操作才能实现对目录的更新。

BasicAttribute 实例与并发多线程访问不同步。试图访问并修改 BasicAttribute 的多个线程应该锁定对象。

从以下版本开始:
1.3
另请参见:
序列化表格

字段摘要
protected  StringattrID
          保存属性的 id。
protected  booleanordered
          记录此属性的值是否有序的标志。
protected  Vector<Object>values
          保存属性的值。
 
构造方法摘要
BasicAttribute(String id)
          构造一个不带值无序属性的新实例。
BasicAttribute(String id, boolean ordered)
          构造一个不带值的可能为有序属性的新实例。
BasicAttribute(String id, Object value)
          构造一个带有单个值的无序属性的新实例。
BasicAttribute(String id, Object value, boolean ordered)
          构造一个带有单个值的可能为有序属性的新实例。
 
方法摘要
 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()
          生成此属性的字符串表示形式。
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

attrID

protected String attrID
保存属性的 id。其由公共构造方法初始化且不能为 null,除非已经重写 BasicAttribute 中使用 attrID 的方法。


values

protected transient Vector<Object> values
保存属性的值。由公共构造方法初始化。其不能为 null,除非已经重写 BasicAttribute 中使用这些值的方法。


ordered

protected boolean ordered
记录此属性的值是否有序的标志。

构造方法详细信息

BasicAttribute

public BasicAttribute(String id)
构造一个不带值无序属性的新实例。

参数:
id - 属性的 id。它不能为 null。

BasicAttribute

public BasicAttribute(String id,
                      Object value)
构造一个带有单个值的无序属性的新实例。

参数:
id - 属性的 id。它不能为 null。
value - 属性的值。如果为 null,则向属性中添加 null 值。

BasicAttribute

public BasicAttribute(String id,
                      boolean ordered)
构造一个不带值的可能为有序属性的新实例。

参数:
id - 属性的 id。它不能为 null。
ordered - 为 true 表示属性值将是有序的;为 false 表示其为无序。

BasicAttribute

public BasicAttribute(String id,
                      Object value,
                      boolean ordered)
构造一个带有单个值的可能为有序属性的新实例。

参数:
id - 属性的 id。它不能为 null。
value - 属性的值。如果为 null,则向属性中添加 null 值。
ordered - 为 true 表示属性值将是有序的;为 false 表示其为无序。
方法详细信息

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 返回的对象中的字段。

Object 类的 clone 方法执行特定的克隆操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意:所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我克隆。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。

Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。

指定者:
接口 Attribute 中的 clone
覆盖:
Object 中的 clone
返回:
此实例的一个克隆。
另请参见:
Cloneable

equals

public boolean equals(Object obj)
确定 obj 是否等于此属性。如果两个属性的属性 id、语法和值都相等,则这两个属性相等。如果属性值是无序的,则添加值的顺序无关紧要。如果属性值是有序的,则值必须与顺序匹配。如果 obj 为 null 或者不是 Attribute,则返回 false。

默认情况下,在比较属性 id 及其值时使用 Object.equals(),值为数组时除外。对于数组,需要使用 Object.equals() 检查数组的每个元素。子类可以重写此方法以利用模式语法信息和匹配规则,其定义了对两个属性的相等有意义的内容。子类如何使用和是否使用模式信息由子类确定。如果子类重写 equals(),则其也应该重写 hashCode(),这样两个相等的属性才能具有相同的哈希码。

覆盖:
Object 中的 equals
参数:
obj - 要检查的可能为 null 的对象。
返回:
如果 obj 等于此属性,则返回 true,否则返回 false。
另请参见:
hashCode(), contains(java.lang.Object)