public interface Attribute
此接口表示与命名对象关联的属性。
在目录中,命名的对象可以与其属性关联。Attribute 接口表示与命名对象关联的属性。属性包含 0 个或多个(可能为 null 的)值。属性值可以是有序的也可以是无序的(参阅 isOrdered())。如果值是无序的,则不允许重复。如果值是有序的,则允许重复。
属性的内容和表示形式及其值均由属性的模式 定义。模式包含关于属性语法和属性其他性质的信息。有关基础目录服务支持模式时如何获取关于属性的模式信息的详细信息,请参阅 getAttributeDefinition() 和 getAttributeSyntaxDefinition()。
两个属性的相等性由实现类确定。简单的实现可以使用 Object.equals() 来确定属性值的相等性,而较复杂的实现可能使用模式信息来确定相等性。类似地,一个实现可能提供仅返回传递给其构造方法的值的静态存储结构,另一个实现可能定义 get() 和 getAll() 从目录动态获取值。
注意,更新 Attribute(如添加或移除值)对目录中相应的属性表示形式没有影响。只有使用 DirContext 接口中的操作才能实现对目录的更新。
BasicAttribute
字段摘要 | |
---|---|
static long |
serialVersionUID 使用 JNDI 1.1.1 中的 serialVersionUID 获取互操作性。 |
方法摘要 | |
---|---|
void |
add(int ix, Object attrVal) 将属性值添加到属性值的有序列表中。 |
boolean |
add(Object attrVal) 向属性添加新值。 |
void |
clear() 从此属性移除所有值。 |
Object |
clone() 对属性进行复制。 |
boolean |
contains(Object attrVal) 确定某个值是否在属性中。 |
Object |
get() 检索此属性的其中一个值。 |
Object |
get(int ix) 从属性值的有序列表中检索属性值。 |
NamingEnumeration<?> |
getAll() 检索属性值的枚举。 |
DirContext |
getAttributeDefinition() 检索属性的模式定义。 |
DirContext |
getAttributeSyntaxDefinition() 检索与属性关联的语法定义。 |
String |
getID() 检索此属性的 id。 |
boolean |
isOrdered() 确定此属性的值是否是有序的。 |
Object |
remove(int ix) 从属性值的有序列表中移除属性值。 |
boolean |
remove(Object attrval) 从属性中移除指定值。 |
Object |
set(int ix, Object attrVal) 设置属性值的有序列表中的属性值。 |
int |
size() 检索此属性中的值数。 |
字段详细信息 |
---|
static final long serialVersionUID
方法详细信息 |
---|
NamingEnumeration<?> getAll() throws NamingException
NamingException
- 如果检索值时遇到命名异常。
isOrdered()
Object get() throws NamingException
NamingException
- 如果检索值时遇到命名异常。
NoSuchElementException
- 如果此属性没有值。
int size()
String getID()
boolean contains(Object attrVal)
attrVal
- 要检查的可能为 null 的值。如果为 null,则检查属性是否具有其值不为 null 的属性值。
Object.equals(java.lang.Object)
,
BasicAttribute.equals(java.lang.Object)
boolean add(Object attrVal)
相等性由实现确定,其可能使用 Object.equals() 或模式信息来确定相等性。
attrVal
- 要添加的可能为 null 的新值。如果为 null,则将 null 作为属性值添加。
boolean remove(Object attrval)
相等性由实现确定,其可能使用 Object.equals() 或模式信息来确定相等性。
attrval
- 要从此属性中移除的可能为 null 的值。如果为 null,则移除为 null 的属性值。
void clear()
DirContext getAttributeSyntaxDefinition() throws NamingException
例如,即使值可能为 Java String 对象,其目录语法仍可能为 "Printable String" 或 "Telephone Number"。或者值可能为字节数组,而其目录语法为 "JPEG" 或 "Certificate"。例如,如果此属性的语法为 "JPEG",则此方法将返回 "JPEG" 的语法定义。
可以从语法定义检索的信息与目录有关。
如果实现不支持模式,则其将抛出 OperationNotSupportedException。如果实现支持模式,则其应定义此方法以返回适当的信息。
OperationNotSupportedException
- 如果不支持获取模式。
NamingException
- 如果在获取模式时发生命名异常。
DirContext getAttributeDefinition() throws NamingException
如果实现不支持模式,则其将抛出 OperationNotSupportedException。如果实现支持模式,则其应定义此方法以返回适当的信息。
OperationNotSupportedException
- 如果不支持获取模式。
NamingException
- 如果在获取模式时发生命名异常。
Object clone()
boolean isOrdered()
get(int)
,
remove(int)
,
add(int, java.lang.Object)
,
set(int, java.lang.Object)
Object get(int ix) throws NamingException
ix
- 属性值的有序列表中值的索引。0 <=
ix <
size()。
NamingException
- 如果检索值时遇到命名异常。
IndexOutOfBoundsException
- 如果
ix 位于指定范围之外。
Object remove(int ix)
ix
- 要移除的值的索引。0 <=
ix <
size()。
IndexOutOfBoundsException
- 如果
ix 位于指定范围之外。
void add(int ix, Object attrVal)
ix
- 要添加新值的属性值的有序列表中的索引。0 <=
ix <=
size()。
attrVal
- 要添加的可能为 null 的属性值;如果为 null,则 null 即为添加的值。
IndexOutOfBoundsException
- 如果
ix 位于指定范围之外。
IllegalStateException
- 如果属性值是无序的并且
attrVal 是这些值之一。
Object set(int ix, Object attrVal)
ix
- 属性值的有序列表中值的索引。0 <=
ix <
size()。
attrVal
- 要使用的可能为 null 的属性值。如果为 null,则 'null' 将替换旧值。
IndexOutOfBoundsException
- 如果
ix 位于指定范围之外。
IllegalStateException
- 如果
attrVal 已存在并且属性值是无序的。