- 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由多个属性类型/值对组成。 按照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
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 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()
static Object
unescapeValue(String val)
给定根据 RFC 2253中指定的规则格式化的属性值字符串,返回未格式化的值。
-
-
-
构造方法详细信息
-
Rdn
public Rdn(Attributes attrSet) throws InvalidNameException
- 参数
-
attrSet
- 包含类型/值映射的非null和非空属性。 - 异常
-
InvalidNameException
-如果内容attrSet
不能用来构造有效的RDN。
-
Rdn
public Rdn(String rdnString) throws InvalidNameException
- 参数
-
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
- 参数
-
type
- 非null和非空字符串属性类型。 -
value
- 非null和非空属性值。 - 异常
-
InvalidNameException
- 如果类型/值不能用于构造有效的RDN。 - 另请参见:
-
toString()
-
-
方法详细信息
-
getValue
public Object getValue()
- 结果
- 非null属性值。
-
getType
public String getType()
检索此Rdn类型之一。 当RDN包含单一类型和值映射(这是常见的RDN用法)时,这是获取类型的便捷方法。对于多值RDN,类型/值对没有在其上定义特定顺序。 在这种情况下,此方法返回其中一个类型/值对的类型。
getValue()
方法返回与此方法返回的类型对应的值。- 结果
- 非null属性类型。
-
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方法)将具有相同的哈希码。- 重写:
-
hashCode
类Object
- 结果
- 表示此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
- 提供非法值时。
-
-