所有类


javax.naming.ldap
类 Rdn

java.lang.Object
  继承者 javax.naming.ldap.Rdn
所有已实现的接口:
Serializable, Comparable<Object>

public class Rdn
   
   
   
   
   
extends Object
implements Serializable, Comparable<Object>

此类表示相对标识名,或 RDN,它是一个 RFC 2253 指定的标识名组件。RDN 的一个示例是 "OU=Sales+CN=J.Smith"。在此示例中,RDN 由多个属性类型/值对组成。RDN 根据 LdapName 类描述中的描述进行解析。

Rdn 类将 RDN 表示为属性类型/值映射关系,可以使用 Attributes 查看。此外,它还包含一些便捷方法,允许在 Rdn 由单个类型/值对组成(这是该类的典型使用方式)时对类型和值进行方便地检索。它还包含一些帮助器方法,允许根据 RFC2253 中定义的转义语法转义非格式化的属性值和取消格式化值的转义。对于采用或返回 Object 形式的属性值的方法,该值可能为 String(非转义形式的),也可能为字节数组。

Rdn 将恰当地解析所有有效 RDN,但是在解析无效 RDN 时不会尝试检测所有可能的错误情况。在接受无效 RDN 时,它显得很“大方”。名称的“有效性”在将名称提供给 LDAP 服务器时最终确定,服务器将基于名称的模式信息和互操作性考虑之类的因素来决定接受还是拒绝该名称。

以下示例代码展示了如何使用将类型和值用作参数的构造方法构造 Rdn:

        Rdn rdn = new Rdn("cn", "Juicy, Fruit");
        System.out.println(rdn.toString());
 
最后一行将打印 cn=Juicy\, FruitunescapeValue() 方法可用于取消在初始值 "Juicy, Fruit" 中所产生的转义逗号的转义。escapeValue() 方法在逗号之前添加转义。

可以通过 RFC 2253 中定义的 RDN 的字符串表示形式实例化此类,如以下示例代码所示:

        Rdn rdn = new Rdn("cn=Juicy\\, Fruit");
        System.out.println(rdn.toString());
 
最后一行将打印 cn=Juicy\, Fruit

Rdn 的实例的并发多线程只读访问不必是同步的。

除非另有说明,否则将 null 参数传递给此类中的构造方法或方法的行为都会导致抛出 NullPointerException。

从以下版本开始:
1.5
另请参见:
序列化表格

构造方法摘要
Rdn(Attributes attrSet)
          根据给定属性集构造 Rdn。
Rdn(Rdn rdn)
          根据给定 rdn 构造 Rdn。
Rdn(String rdnString)
          根据给定字符串构造 Rdn。
Rdn(String type, Object value)
          根据给定属性类型和值构造 Rdn。
 
方法摘要
 int compareTo(Object obj)
          比较此 Rdn 与指定 Object 的顺序。
 boolean equals(Object obj)
          比较指定 Object 与此 Rdn 的相等性。
static String escapeValue(Object val)
          在给定属性值的情况下返回根据 RFC 2253 中指定的规则转义的字符串。
 String getType()
          检索一个此 Rdn 的类型。
 Object getValue()
          检索一个此 Rdn 的值。
 int hashCode()
          返回此 RDN 的哈希码。
 int size()
          检索此 Rdn 中的属性类型/值对的数目。
 Attributes toAttributes()
          检索此 Rdn 中包含的类型/值映射关系的 Attributes 视图。
 String toString()
          以字符串形式返回此 Rdn,该字符串使用由 RFC 2253 定义并在 LdapName 类描述中描述的格式表示。
static Object unescapeValue(String val)
          在给定根据 RFC 2253 中指定的规则进行格式化的属性值字符串的情况下,返回未格式化的值。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

Rdn

public Rdn(Attributes attrSet)
    throws InvalidNameException
根据给定属性集构造 Rdn。参见 Attributes

字符串属性值不会被解释为 RFC 2253 格式的 RDN 字符串。即这些值是按字面意义(不解析)使用的,假定被取消了转义。

参数:
attrSet - 包含类型/值映射关系的非 null 非空属性。
抛出:
InvalidNameException - 如果无法使用 attrSet 的内容构造有效的 RDN。

Rdn

public Rdn(String rdnString)
    throws InvalidNameException
根据给定字符串构造 Rdn。此构造方法采用根据 RFC 2253 中定义和在 LdapName 类描述中描述的规则格式化的字符串。

参数:
rdnString - 非 null 和非空 RFC2253 格式化字符串。
抛出:
InvalidNameException - 如果在解析 rdnString 期间发生语法错误。

Rdn

public Rdn(Rdn rdn)
根据给定 rdn 构造 Rdn。将 rdn 的内容简单地复制到新创建的 Rdn 中。

参数:
rdn - 要复制的非 null Rdn。

Rdn

public Rdn(String type,
           Object value)
    throws InvalidNameException
根据给定属性类型和值构造 Rdn。字符串属性值不会被解释为 RFC 2253 格式的 RDN 字符串。即这些值是按字面意义(不解析)使用的,假定被取消了转义。

参数:
type - 非 null 和非空字符串属性类型。
value - 非 null 和非空属性值。
抛出:
InvalidNameException - 如果无法使用类型/值构造有效的 RDN。
另请参见:
toString()
方法详细信息

getValue

public Object getValue()
检索一个此 Rdn 的值。当 RDN 包含单个类型和值的映射关系(常见的 RDN 用法)时,此为获取值的便捷方法。

对于多值 RDN,此方法返回与 getType() 方法返回的类型相对应的值。

返回:
非 null 属性值。

getType

public String getType()
检索一个此 Rdn 的类型。当 RDN 包含单个类型和值的映射关系(常见的 RDN 用法)时,此为获取类型的便捷方法。

对于多值 RDN,类型/值对不具有对其定义的任何特定顺序。在这种情况下,此方法返回一种类型/值对的类型。getValue() 方法返回与此方法返回的类型相对应的值。

返回:
非 null 属性类型。

toString

public String toString()
以字符串形式返回此 Rdn,该字符串使用由 RFC 2253 定义并在 LdapName 类描述中描述的格式表示。

覆盖:
Object 中的 toString
返回:
Rdn 的字符串表示形式。

compareTo

public int compareTo(Object obj)
比较此 Rdn 与指定 Object 的顺序。根据此 Rdn 小于、等于还是大于指定 Object 分别返回负整数、零或正整数。

如果 obj 为 null 或者不是一个 Rdn 实例,则抛出 ClassCastException。

将 RDN 的属性类型和值对并肩排列起来,并按字典顺序进行比较。多值 Rdn 中组件的顺序(如 "ou=Sales+cn=Bob")无关紧要。

指定者:
接口 Comparable<Object> 中的 compareTo
参数:
obj - 要与之比较的非 null 对象。
返回:
根据此 Rdn 小于、等于还是大于指定 Object 分别返回负整数、零或正整数。
抛出:
ClassCastException - 如果 obj 为 null 或者不是一个 Rdn。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部