Module java.naming

Class 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类默认返回传递给其构造函数和/或使用添加/删除方法操作的值。子类可以覆盖get()getAll()方法,从目录动态获取值(或直接实现Attribute接口,而不是继承BasicAttribute)。

请注意,对BasicAttribute的更新(例如添加或删除值)不会影响目录中属性的相应表示。只能使用DirContext接口中的操作来影响目录的更新。

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

自:
1.3
参见:
  • Field Details

    • attrID

      protected String attrID
      持有属性的ID。由公共构造函数初始化,不能为null,除非覆盖了使用attrID的BasicAttribute中的方法。
    • values

      protected transient Vector<Object> values
      持有属性的值。由公共构造函数初始化,不能为null,除非覆盖了使用值的BasicAttribute中的方法。
    • ordered

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

    • 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。
  • Method Details

    • clone

      public Object clone()
      从类中复制的描述: Object
      创建并返回此对象的副本。"副本"的确切含义可能取决于对象的类。一般意图是,对于任何对象x,表达式:
       x.clone() != x
      将为true,并且表达式:
       x.clone().getClass() == x.getClass()
      将为true,但这些不是绝对要求。虽然通常情况下:
       x.clone().equals(x)
      将为true,但这不是绝对要求。

      按照惯例,应通过调用super.clone来获取返回的对象。如果一个类及其所有超类(除了Object)遵循此约定,那么x.clone().getClass() == x.getClass()

      按照惯例,此方法返回的对象应独立于正在克隆的对象。为了实现这种独立性,可能需要修改通过super.clone返回的对象的一个或多个字段,然后再返回它。通常,这意味着复制组成对象内部“深层结构”的任何可变对象,并将对这些对象的引用替换为对副本的引用。如果一个类只包含原始字段或对不可变对象的引用,则通常情况下,通过super.clone返回的对象中的字段不需要被修改。

      指定者:
      clone 在接口 Attribute
      覆盖:
      clone 在类 Object
      返回:
      此实例的克隆。
      参见:
    • equals

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

      默认情况下,比较属性ID及其值时使用Object.equals(),除非值是数组。对于数组,将使用Object.equals()检查数组的每个元素。子类可以覆盖此方法以利用模式语法信息和匹配规则,这些规则定义了两个属性相等的含义。子类如何以及是否使用模式信息由子类确定。如果子类覆盖了equals(),则还应该覆盖hashCode(),以便相等的两个属性具有相同的哈希码。

      覆盖:
      equals 在类 Object
      参数:
      obj - 要检查的可能为null的对象。
      返回:
      如果obj等于此属性,则返回true;否则返回false。
      参见:
    • hashCode

      public int hashCode()
      覆盖:
      hashCode 在类 Object
      返回:
      表示此属性的哈希码的int值。
      参见:
    • toString

      public String toString()
      生成此属性的字符串表示。该字符串由属性的ID和其值组成。此字符串用于调试,不应被程序化解释。
      覆盖:
      toString 在类 Object
      返回:
      此属性的非空字符串表示形式。
    • getAll

      public NamingEnumeration<?> getAll() throws NamingException
      检索此属性值的枚举。

      默认情况下,返回的值是传递给构造函数和/或使用add/replace/remove方法操作的值。子类可以重写此方法,以动态地从目录中检索值。

      指定者:
      getAll 在接口 Attribute
      返回:
      属性值的非空枚举。枚举的每个元素都是可能为null的对象。对象的类是属性值的类。如果属性没有值,则返回空枚举。
      抛出:
      NamingException - 检索值时遇到命名异常。
      另请参见:
    • get

      public Object get() throws NamingException
      检索此属性值的一个值。

      默认情况下,返回的值是传递给构造函数和/或使用add/replace/remove方法操作的值之一。子类可以重写此方法,以动态地从目录中检索值。

      指定者:
      get 在接口 Attribute
      返回:
      代表属性值之一的可能为null的对象。如果属性值为null,则为null。
      抛出:
      NamingException - 检索值时遇到命名异常。
    • size

      public int size()
      从接口复制的描述: Attribute
      检索此属性中值的数量。
      指定者:
      size 在接口 Attribute
      返回:
      此属性中值的非负数。
    • getID

      public String getID()
      从接口复制的描述: Attribute
      检索此属性的ID。
      指定者:
      getID 在接口 Attribute
      返回:
      此属性的ID。不能为空。
    • contains

      public boolean contains(Object attrVal)
      确定一个值是否在此属性中。

      默认情况下,比较attrVal与此属性的值时使用Object.equals(),除非attrVal是数组。对于数组,将使用Object.equals()检查数组的每个元素。子类可以使用模式信息来确定相等性。

      指定者:
      contains 在接口 Attribute
      参数:
      attrVal - 要检查的可能为null的值。如果为null,则检查属性是否具有值为null的属性值。
      返回:
      如果attrVal是此属性的值之一,则返回true;否则返回false。
      另请参见:
    • add

      public boolean add(Object attrVal)
      向此属性添加一个新值。

      默认情况下,比较attrVal与此属性的值时使用Object.equals(),除非attrVal是数组。对于数组,将使用Object.equals()检查数组的每个元素。子类可以使用模式信息来确定相等性。

      指定者:
      add 在接口 Attribute
      参数:
      attrVal - 要添加的新可能为null的值。如果为null,则将null作为属性值添加。
      返回:
      如果添加了一个值,则返回true;否则返回false。
    • remove

      public boolean remove(Object attrval)
      从此属性中删除指定的值。

      默认情况下,比较attrVal与此属性的值时使用Object.equals(),除非attrVal是数组。对于数组,将使用Object.equals()检查数组的每个元素。子类可以使用模式信息来确定相等性。

      指定者:
      remove 在接口 Attribute
      参数:
      attrval - 要从此属性中删除的可能为null的值。如果为null,则删除属性值为null的属性值。
      返回:
      如果删除了该值,则返回true;否则返回false。
    • clear

      public void clear()
      从接口复制的描述: Attribute
      从此属性中删除所有值。
      指定者:
      clear 在接口 Attribute
    • isOrdered

      public boolean isOrdered()
      从接口复制的描述: Attribute
      确定此属性的值是否有序。如果属性的值是有序的,则允许重复值。如果属性的值是无序的,则以任何顺序呈现它们,并且没有重复值。
      指定者:
      isOrdered 在接口 Attribute
      返回:
      如果此属性的值有序,则返回true;否则返回false。
      另请参见:
    • get

      public Object get(int ix) throws NamingException
      从接口复制的描述: Attribute
      从属性值的有序列表中检索属性值。此方法返回列表中ix索引处的值。如果属性值是无序的,则此方法返回该索引处的值。
      指定者:
      get 在接口 Attribute
      参数:
      ix - 有序属性值列表中值的索引。 0 <= ix < size()
      返回:
      在索引ix处可能为null的属性值;如果属性值为null,则为null。
      抛出:
      NamingException - 检索值时遇到命名异常。
    • remove

      public Object remove(int ix)
      从接口复制的描述: Attribute
      从属性值的有序列表中删除属性值。此方法删除列表中ix索引处的值。如果属性值是无序的,则此方法删除该索引处的值。位于索引大于ix的值向列表前移(其索引减一)。
      指定者:
      remove 在接口 Attribute
      参数:
      ix - 要删除的值的索引。 0 <= ix < size()
      返回:
      已删除的可能为null的属性值在索引ix处;如果属性值为null,则为null。
    • add

      public void add(int ix, Object attrVal)
      从接口复制的描述: Attribute
      向属性值的有序列表中添加属性值。此方法将attrVal添加到属性值列表的索引ix处。位于索引为ix或更大的位置的值向列表末尾移动(其索引加一)。如果属性值是无序的并且已经有attrVal,则抛出IllegalStateException
      指定者:
      add 在接口 Attribute
      参数:
      ix - 要添加新值的属性值有序列表中的索引。 0 <= ix <= size()
      attrVal - 要添加的可能为null的属性值;如果为null,则添加null值。
    • set

      public Object set(int ix, Object attrVal)
      从接口复制的描述: Attribute
      在属性值有序列表中设置属性值。此方法将属性值列表中索引为ix的值设置为attrVal。旧值将被删除。如果属性值是无序的,则此方法将在该索引处的值设置为attrVal,除非attrVal已经是这些值之一。在这种情况下,将抛出IllegalStateException
      指定者:
      set 在接口 Attribute
      参数:
      ix - 属性值有序列表中值的索引。 0 <= ix < size()
      attrVal - 要使用的可能为null的属性值。如果为null,则'null'将替换旧值。
      返回:
      替换的可能为null的属性值在索引ix处。如果属性值为null,则为null。
    • getAttributeSyntaxDefinition

      public DirContext getAttributeSyntaxDefinition() throws NamingException
      检索与此属性关联的语法定义。

      默认情况下,此方法会抛出OperationNotSupportedException。如果支持模式,则子类应该重写此方法。

      指定者:
      getAttributeSyntaxDefinition 在接口 Attribute
      返回:
      属性的语法定义。如果实现支持模式但此特定属性没有任何模式信息,则为null。
      抛出:
      OperationNotSupportedException - 如果不支持获取模式。
      NamingException - 在获取模式时发生命名异常。
    • getAttributeDefinition

      public DirContext getAttributeDefinition() throws NamingException
      检索此属性的模式定义。

      默认情况下,此方法会抛出OperationNotSupportedException。如果支持模式,则子类应该重写此方法。

      指定者:
      getAttributeDefinition 在接口 Attribute
      返回:
      此属性的模式定义。如果实现支持模式但此特定属性没有任何模式信息,则为null。
      抛出:
      OperationNotSupportedException - 如果不支持获取模式。
      NamingException - 在获取模式时发生命名异常。