我想在LDAP服务器中查找数据。当我使用以下代码时,它希望我具有NamingEnumeration(而不是List,HashMap),并且它迫使我使用SearchResult类型。
NamingEnumeration<SearchResult> values =
dirContext.search("cn=Loggers,cn=config", "(objectClass=*)", searchCtls);
当我尝试使用它时,由于它是NamingEnumeration类型,所以我不知道如何将其更改为String。有没有一种方法可以将其转换为String?我想使用 split(),但是它不是String,因此似乎不起作用。
for (NamingEnumeration<SearchResult> ne : searchResult) {
String a = searchResult.split(""); // I want to split.
if(a.length-1].equals("Logger")){
String logType = a[a.lenth-2];
try {
// and then , I will do something with logType
您知道,我的Java基础确实很弱。我将对如何将NamingEnumeration类型更改为String提供任何建议?如果有很多方法,我想知道。
答案 0 :(得分:1)
迭代NamingEnumeration
的通常方法是使用hasMore()
和next()
。
NamingEnumeration<SearchResult> results =
dirContext.search("cn=Loggers,cn=config", "(objectClass=*)", searchCtls);
while (results.hasMore()) {
SearchResult result = results.next();
Attributes attributes = result.getAttributes();
Attribute cn = attributes.get("cn");
//get/iterate the values of the attribute
}
“增强的语句(有时称为“ for-each循环”语句)”不能用于它们,因为它们实现了Enumeration
而不是Iterable
接口。原因主要是历史性的,NamingEnumeration
自Java 1.3开始存在,Iterable
自Java 1.5开始存在。