模块  java.naming
软件包  javax.naming.ldap

Class Rdn

  • 实现的所有接口
    SerializableComparable<Object>

    public class Rdn
    extends Object
    implements Serializable, Comparable<Object>
    此类表示相对可分辨名称或RDN,它是由RFC 2253指定的可分辨名称的组件。 RDN的示例是“OU = Sales + CN = J.Smith”。 在此示例中,RDN由多个属性类型/值对组成。 按照LdapName的类描述中的描述解析RDN。

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

    Rdn将正确解析所有有效的RDN,但在解析无效的RDN时不会尝试检测所有可能的违规。 接受无效的RDN是“慷慨的”。 名称的“有效性”最终在提供给LDAP服务器时确定,该服务器可以基于诸如其架构信息和互操作性考虑因素之类的因素接受或拒绝该名称。

    下面的代码示例演示如何使用将type和value作为参数的构造函数构造Rdn:

      Rdn rdn = new Rdn("cn", "Juicy, Fruit");
          System.out.println(rdn.toString()); 
    最后一行将打印cn=Juicy\, Fruit unescapeValue()方法可用于取消转义的逗号,从而产生原始值"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
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • 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 - 非空且非空的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
        重写:
        toString ,类 Object
        结果
        Rdn的字符串表示形式。
      • compareTo

        public int compareTo​(Object obj)
        将此Rdn与指定的Object进行比较以获取订单。 返回负整数,零或正整数,因为此Rdn小于,等于或大于给定的Object。

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

        RDN的属性类型和值对彼此对齐并按字典顺序进行比较。 多值Rdns中的组件顺序(例如“ou = Sales + cn = Bob”)并不重要。

        Specified by:
        compareTo接口 Comparable<Object>
        参数
        obj - 要比较的非null对象。
        结果
        一个负整数,零或正整数,因为此Rdn小于,等于或大于给定的对象。
        异常
        ClassCastException - 如果obj为null或不是Rdn。
      • equals

        public boolean equals​(Object obj)
        将指定的Object与此Rdn进行比较以获得相等性。 如果给定对象也是Rdn并且两个Rdns表示相同的属性类型和值映射,则返回true。 多值Rdns中的组件顺序(例如“ou = Sales + cn = Bob”)并不重要。

        类型和值相等匹配完成如下:

        • 比较类型是否相等,忽略它们的大小写。
        • 具有不同但等效的引用,转义或UTF8-hex编码用法的字符串值被认为是相等的。 在比较期间忽略值的大小写。

        如果obj为null或不是Rdn的实例,则返回false。

        重写:
        equals ,类 Object
        参数
        obj - 要与此Rdn进行相等性比较的对象。
        结果
        如果指定的对象等于此Rdn,则返回true。
        另请参见:
        hashCode()
      • hashCode

        public int hashCode()
        返回此RDN的哈希码。 两个相等的RDN(根据equals方法)将具有相同的哈希码。
        重写:
        hashCodeObject
        结果
        表示此Rdn的哈希码的int。
        另请参见:
        equals(java.lang.Object)
      • toAttributes

        public Attributes toAttributes()
        检索此Rdn中包含的类型/值映射的Attributes视图。
        结果
        包含此Rdn的类型/值映射的非null属性。
      • size

        public int size()
        检索此Rdn中的属性类型/值对的数量。
        结果
        此Rdn中的非负数量的类型/值对。
      • escapeValue

        public static String escapeValue​(Object val)
        给定属性的值,返回根据RFC 2253中指定的规则转义的字符串。

        例如,如果val是“Sue,Grabbit和Runn”,则此方法返回的转义值为“Sue \,Grabbit和Runn”。

        字符串值表示为String,二进制值表示为字节数组。

        参数
        val - 要转义的非null对象。
        结果
        转义字符串值。
        异常
        ClassCastException - 如果val不是String或byte数组。
      • unescapeValue

        public static Object unescapeValue​(String val)
        给定根据RFC 2253中指定的规则格式化的属性值字符串,返回未格式化的值。 删除转义和引号,并将十六进制编码的UTF-8转换为等效的UTF-16字符。 以字符串形式返回字符串值,以字节数组形式返回二进制值。

        RFC 2253中定义了合法和非法的值。此方法慷慨接受这些值并且不会捕获所有非法值。 因此,传递非法值可能不一定会触发IllegalArgumentException

        参数
        val - 要取消转义的非空字符串。
        结果
        未转义的价值。
        异常
        IllegalArgumentException - 提供非法值时。