模块 java.naming

类 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() 来确定属性值的相等性,当值为数组时使用 except 。对于数组,使用 Object.equals() 检查数组的每个元素。 BasicAttribute 的子类可以在执行类似的相等性检查时使用模式信息,方法是覆盖对模式的使用有意义的方法。同样,BasicAttribute 类默认返回传递给其构造函数和/或使用添加/删除方法操作的值。 BasicAttribute 的子类可以覆盖 get()getAll() 以从目录动态获取值(或直接实现 Attribute 接口而不是子类化 BasicAttribute )。

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

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

自从:
1.3
参见:
  • 字段详细信息

    • attrID

      protected String  attrID
      保存属性的 id。它由公共构造方法初始化,并且不能为空,除非 BasicAttribute 中使用 attrID 的方法已被重写。
    • values

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

      protected boolean ordered
      用于记录此属性的值是否有序的标志。
  • 构造方法详细信息

    • BasicAttribute

      public BasicAttribute(String  id)
      构造一个没有值的无序属性的新实例。
      参数:
      id - 属性的 id。它不能为空。
    • BasicAttribute

      public BasicAttribute(String  id, Object  value)
      构造具有单个值的无序属性的新实例。
      参数:
      id - 属性的 id。它不能为空。
      value - 属性值。如果为空,则将空值添加到属性。
    • BasicAttribute

      public BasicAttribute(String  id, boolean ordered)
      构造一个没有值的可能有序属性的新实例。
      参数:
      id - 属性的 id。它不能为空。
      ordered - true 表示属性的值将被排序;否则为假。
    • BasicAttribute

      public BasicAttribute(String  id, Object  value, boolean ordered)
      构造具有单个值的可能有序属性的新实例。
      参数:
      id - 属性的 id。它不能为空。
      value - 属性值。如果为空,则将空值添加到属性。
      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 在接口 Attribute
      重写:
      clone 在类 Object
      返回:
      此实例的克隆。
      参见:
    • equals

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

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

      重写:
      equals 在类 Object
      参数:
      obj - 要检查的可能为空的对象。
      返回:
      如果 obj 等于此属性,则为真;否则为假。
      参见:
    • hashCode

      public int hashCode()
      计算此属性的哈希码。

      散列码是通过将属性的 id 的散列码与其所有值的散列码相加计算得出的,数组值除外。对于数组,将数组中每个元素的哈希码相加。如果一个子类覆盖了 hashCode() ,它也应该覆盖 equals() 以便两个相同的属性具有相同的哈希码。

      重写:
      hashCode 在类 Object
      返回:
      表示此属性的哈希码的 int。
      参见:
    • toString

      public String  toString()
      生成此属性的字符串表示形式。该字符串由属性的 ID 及其值组成。此字符串用于调试,而不是用于以编程方式解释。
      重写:
      toString 在类 Object
      返回:
      此属性的非空字符串表示形式。
    • getAll

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

      默认情况下,返回的值是传递给构造方法和/或使用添加/替换/删除方法操作的值。子类可以重写它以从目录中动态检索值。

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

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

      默认情况下,返回的值是传递给构造方法和/或使用添加/替换/删除方法操作的值之一。子类可以重写它以从目录中动态检索值。

      指定者:
      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的属性值。
      返回:
      如果 attrVal 是此属性的值之一,则为真;否则为假。
      参见:
    • add

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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