模块 java.naming

类 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 中定义的转义语法格式化的值。对于将属性值作为对象获取或返回的方法,该值是字符串(未转义形式)或字节数组。

Rdn 将正确解析所有有效的 RDN,但在解析无效的 RDN 时不会尝试检测所有可能的违规行为。接受无效的 RDN 是“慷慨的”。名称的“有效性”最终是在将名称提供给 LDAP 服务时确定的,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

      public Rdn(Attributes  attrSet) throws InvalidNameException
      从给定的属性集构造一个 Rdn。参见 Attributes

      字符串属性值不被解释为 RFC 2253 格式的 RDN 字符串。也就是说,这些值按字面意义使用(未解析)并假定为未转义。

      参数:
      attrSet - 包含类型/值映射的非空和非空属性。
      抛出:
      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 - 要复制的非空 Rdn。
    • Rdn

      public Rdn(String  type, Object  value) throws InvalidNameException
      从给定的属性类型和值构造一个 Rdn。字符串属性值不被解释为 RFC 2253 格式的 RDN 字符串。也就是说,这些值按字面意义使用(未解析)并假定为未转义。
      参数:
      type - 非 null 和非空字符串属性类型。
      value - 非空和非空属性值。
      抛出:
      InvalidNameException - 如果类型/值不能用于构造有效的 RDN。
      参见:
  • 方法详情

    • getValue

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

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

      返回:
      非空属性值。
    • getType

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

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

      返回:
      非空属性类型。
    • toString

      public String  toString()
      将此 Rdn 作为字符串返回,该字符串以 RFC 2253 定义的格式表示,并在 LdapName 的类描述中进行了描述。
      重写:
      toString 在类 Object
      返回:
      Rdn 的字符串表示形式。
    • compareTo

      public int compareTo(Object  obj)
      将此 Rdn 与指定的 Object 进行比较以获得顺序。返回负整数、零或正整数,因为此 Rdn 小于、等于或大于给定的对象。

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

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

      指定者:
      compareTo 在接口 Comparable<Object>
      参数:
      obj - 要比较的非空对象。
      返回:
      负整数、零或正整数,因为此 Rdn 小于、等于或大于给定的对象。
      抛出:
      ClassCastException - 如果 obj 为空或不是 Rdn。
    • equals

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

      类型和值相等匹配如下:

      • 比较类型是否相等,并忽略它们的大小写。
      • 具有不同但等效的引号、转义或 UTF8 十六进制编码用法的字符串值被视为相等。在比较期间忽略值的大小写。

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

      重写:
      equals 在类 Object
      参数:
      obj - 要与此 Rdn 进行相等比较的对象。
      返回:
      如果指定对象等于此 Rdn,则为真。
      参见:
    • hashCode

      public int hashCode()
      返回此 RDN 的哈希码。两个相等的 RDN(根据 equals 方法)将具有相同的哈希码。
      重写:
      hashCode 在类 Object
      返回:
      表示此 Rdn 的哈希码的 int。
      参见:
    • toAttributes

      public Attributes  toAttributes()
      检索此 Rdn 中包含的类型/值映射的 Attributes 视图。
      返回:
      包含此 Rdn 的类型/值映射的非空属性。
    • size

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

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

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

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

      参数:
      val - 要转义的非空对象。
      返回:
      转义字符串值。
      抛出:
      ClassCastException - 如果 val 不是字符串或字节数组。
    • unescapeValue

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

      合法值和非法值在 RFC 2253 中定义。此方法在接受值方面很慷慨,不会捕获所有非法值。因此,传入非法值不一定会触发 IllegalArgumentException

      参数:
      val - 要取消转义的非空字符串。
      返回:
      未转义的值。
      抛出:
      IllegalArgumentException - 当提供非法值时。