Module  java.naming

Class BasicAttribute

  • All Implemented Interfaces:
    SerializableCloneableAttribute


    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
    • 字段详细信息

      • attrID

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

        protected transient Vector<Object> values
        保留属性的值。 由公共建设者初始化。 不能为null,除非BasicAttribute中使用值的方法已被覆盖。
      • ordered

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

      • 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表示属性的值将被排序; 否则为假。
      • BasicAttribute

        public BasicAttribute​(String id,
                              Object value,
                              boolean ordered)
        构造具有单个值的可能有序属性的新实例。
        参数
        id - 属性的id。 它不能为空。
        value - 属性的值。 如果为null,则将null值添加到该属性。
        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返回的对象中的字段。

        该方法cloneObject执行特定克隆操作。 首先,如果此对象的类不实现接口Cloneable ,则抛出CloneNotSupportedException 请注意,所有阵列被认为是实现该接口Cloneable并且所述的返回类型clone数组类型的方法T[]T[]其中T是任何引用或原始类型。 否则,该方法将创建该对象的类的新实例,并将其所有字段初始化为该对象的相应字段的内容,就像通过赋值一样。 这些字段的内容本身不被克隆。 因此,该方法执行该对象的“浅拷贝”,而不是“深度拷贝”操作。

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

        Specified by:
        clone在接口 Attribute
        重写:
        cloneObject
        结果
        这个实例的一个克隆。
        另请参见:
        Cloneable
      • equals

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

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

        重写:
        equalsObject
        参数
        obj - 可能需要检查的空对象。
        结果
        如果obj等于此属性,则为true; 否则为假。
        另请参见:
        hashCode()contains(java.lang.Object)
      • hashCode

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

        通过添加属性id的哈希码和除了数组的值之外的所有值的值来计算哈希码。 对于数组,数组的每个元素的哈希码相加。 如果一个子类覆盖hashCode() ,它也应该覆盖equals() ,以使两个相等的属性具有相同的哈希码。

        重写:
        hashCodeObject
        结果
        一个表示此属性的哈希码的int。
        另请参见:
        equals(java.lang.Object)
      • toString

        public String toString​()
        生成此属性的字符串表示形式。 该字符串由属性的id及其值组成。 此字符串用于调试,而不是以编程方式解释。
        重写:
        toStringObject
        结果
        此属性的非空字符串表示形式。
      • 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 - 如果在检索该值时遇到命名异常。
      • size

        public int size​()
        说明从接口Attribute复制
        检索此属性中的值的数量。
        Specified by:
        size在接口 Attribute
        结果
        此属性中的非负数值。
      • getID

        public String getID​()
        描述从接口Attribute复制
        检索此属性的ID。
        Specified by:
        getID在接口 Attribute
        结果
        该属性的id。 它不能为空。
      • 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()检查数组的每个元素。 子类可以使用模式信息来确定相等性。

        Specified by:
        add在接口 Attribute
        参数
        attrVal - 要添加的新的可能的null值。 如果为null,则添加null作为属性值。
        结果
        如果添加了值,则为true; 否则为假。
      • remove

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

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

        Specified by:
        remove在接口 Attribute
        参数
        attrval - 从此属性中删除的可能的空值。 如果为null,则删除属性值为null。
        结果
        如果值被删除,则为true; 否则为假。
      • clear

        public void clear​()
        说明从界面Attribute复制
        从此属性中删除所有值。
        Specified by:
        clear在接口 Attribute
      • 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)。
        Specified by:
        remove在接口 Attribute
        参数
        ix - 要删除的值的索引。 0 <= ix < size()
        结果
        索引号为ix的可能为null的属性值被删除; 如果属性值为null,则为null。
      • add

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

        public Object set​(int ix,
                          Object attrVal)
        描述从接口Attribute复制
        在属性值的有序列表中设置属性值。 该方法将属性值列表的ix索引值设置为attrVal 旧值被删除。 如果属性值无序,则该方法将该索引处的值设置为attrVal ,除非attrVal是其中一个值。 在这种情况下,抛出IllegalStateException
        Specified by:
        set在接口 Attribute
        参数
        ix - 属性值的有序列表中的值的索引。 0 <= ix < size()
        attrVal - 可能为空的属性值要使用。 如果为null,'null'替换旧值。
        结果
        索引ix上可能为null的属性值被替换。 如果属性值为空,则为空。
      • 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.