public class BasicAttribute extends Object implements Attribute
此实现不支持模式方法getAttributeDefinition()和getAttributeSyntaxDefinition() 。 他们只是投掷OperationNotSupportedException 。 BasicAttribute的子类应支持这些方法。
默认情况下, BasicAttribute类使用Object.equals()在测试相等性或搜索值时确定属性值的相等性, 除非该值为数组。 对于数组,使用Object.equals()检查数组的每个元素。 BasicAttribute的子类可以通过覆盖这种使用模式有意义的方法进行类似的等式检查来利用模式信息。 类似地,默认情况下, BasicAttribute类返回传递给其构造函数和/或使用add / remove方法进行操作的值。 BasicAttribute的子类可以覆盖get()和getAll()以从目录动态获取值(或直接实现Attribute接口,而不是子类化BasicAttribute )。
请注意, BasicAttribute的更新(如添加或删除值)不会影响目录中属性的相应表示形式。 只能使用DirContext界面中的操作来更新目录。
BasicAttribute实例与并发多线程访问不同步。 尝试访问和修改BasicAttribute的多个线程应锁定该对象。
Modifier and Type | Field and Description |
---|---|
protected String |
attrID
保留属性的ID。
|
protected boolean |
ordered
用于记录此属性的值是否被排序的标志。
|
protected Vector<Object> |
values
保留属性的值。
|
Constructor and Description |
---|
BasicAttribute(String id)
构造无值的无序属性的新实例。
|
BasicAttribute(String id, boolean ordered)
构造一个没有值的可能有序属性的新实例。
|
BasicAttribute(String id, Object value)
使用单个值构造无序属性的新实例。
|
BasicAttribute(String id, Object value, boolean ordered)
构造具有单个值的可能有序属性的新实例。
|
Modifier and Type | Method and Description |
---|---|
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()
生成此属性的字符串表示形式。
|
protected String attrID
protected transient Vector<Object> values
protected boolean ordered
public BasicAttribute(String id)
id
- 属性的id。
它不能为空。
public BasicAttribute(String id, Object value)
id
- 属性的id。
它不能为空。
value
- 属性的值。
如果为null,则将null值添加到该属性。
public BasicAttribute(String id, boolean ordered)
id
- 属性的id。
它不能为空。
ordered
- true表示属性的值将被排序;
否则为假。
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
的方法Object
执行特定的克隆操作。 首先,如果此对象的类不实现接口Cloneable
,则抛出CloneNotSupportedException
。 请注意,所有阵列被认为是实现该接口Cloneable
和所述的返回类型clone
数组类型的方法T[]
是T[]
其中T是任何引用或原始类型。 否则,该方法将创建该对象的类的新实例,并将其所有字段初始化为完全符合该对象的相应字段的内容,就像通过赋值一样。 这些字段的内容本身不被克隆。 因此,该方法执行该对象的“浅拷贝”,而不是“深度拷贝”操作。
Object
类本身并不实现接口Cloneable
,因此在类别为Object
的对象上调用clone
方法将导致运行时抛出异常。
public boolean equals(Object obj)
默认情况下Object.equals()比较属性ID和其值除了当一个值是一个数组时使用。 对于数组,使用Object.equals()检查数组的每个元素。 一个子类可以覆盖它,以利用模式语法信息和匹配规则,这些规则定义了两个属性相等的含义。 子类如何使用模式信息是由子类确定的。 如果一个子类覆盖equals() ,它也应该覆盖hashCode() ,使得两个相等的属性具有相同的哈希码。
equals
在
Object
obj
- 要检查的可能的空对象。
hashCode()
,
contains(java.lang.Object)
public int hashCode()
通过添加属性id的哈希码和除了数组的值之外的所有值的值来计算哈希码。 对于数组,数组的每个元素的哈希码相加。 如果一个子类覆盖hashCode() ,它也应该覆盖equals() ,以使两个相等的属性具有相同的哈希码。
hashCode
在
Object
equals(java.lang.Object)
public String toString()
public NamingEnumeration<?> getAll() throws NamingException
默认情况下,返回的值是传递给构造函数和/或使用add / replace / remove方法操作的值。 一个子类可以覆盖此值,从目录中动态地检索这些值。
getAll
在接口
Attribute
NamingException
- 如果在检索值时遇到命名异常。
Attribute.isOrdered()
public Object get() throws NamingException
默认情况下,返回的值是传递给构造函数和/或使用add / replace / remove方法进行操作的值之一。 子类可以覆盖此值,以从目录动态检索该值。
get
在接口
Attribute
NamingException
- 如果在检索该值时遇到命名异常。
public int size()
Attribute
复制
public boolean contains(Object attrVal)
默认情况下,Object.equals() attrVal比较具有该属性的值时,除了当attrVal是阵列被使用。 对于数组,使用Object.equals()检查数组的每个元素。 子类可以使用模式信息来确定相等性。
contains
在界面
Attribute
attrVal
- 可能的null值要检查。
如果为null,请检查属性是否具有值为null的属性值。
Object.equals(java.lang.Object)
,
equals(java.lang.Object)
public boolean add(Object attrVal)
默认情况下,Object.equals() attrVal比较具有该属性的值时,除了当attrVal是阵列被使用。 对于数组,使用Object.equals()检查数组的每个元素。 子类可以使用模式信息来确定相等性。
public boolean remove(Object attrval)
默认情况下,Object.equals() attrVal比较具有该属性的值时,除了当attrVal是阵列被使用。 对于数组,使用Object.equals()检查数组的每个元素。 子类可以使用模式信息来确定相等性。
public boolean isOrdered()
Attribute
复制
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
复制
get
在界面
Attribute
ix
- 属性值的有序列表中的值的索引。
0 <= ix < size()
。
NamingException
- 如果在检索该值时遇到命名异常。
public Object remove(int ix)
Attribute
复制
public void add(int ix, Object attrVal)
Attribute
复制
public Object set(int ix, Object attrVal)
Attribute
复制
public DirContext getAttributeSyntaxDefinition() throws NamingException
这种方法默认抛出OperationNotSupportedException。 子类应该覆盖此方法,如果它支持模式。
getAttributeSyntaxDefinition
在界面
Attribute
OperationNotSupportedException
- 如果不支持获取模式。
NamingException
- 如果获取模式时发生命名异常。
public DirContext getAttributeDefinition() throws NamingException
这种方法默认抛出OperationNotSupportedException。 子类应该覆盖此方法,如果它支持模式。
getAttributeDefinition
在接口
Attribute
OperationNotSupportedException
- 如果不支持获取模式。
NamingException
- If a naming exception occurs while getting the schema.