我想在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提供任何建议?如果有很多方法,我想知道。
最佳答案
迭代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语句(有时称为” for-each循环”语句),因为它们实现了
Enumeration
而不是Iterable
接口。其原因主要是历史原因,NamingEnumeration
自Java 1.3开始存在,Iterable
自Java 1.5开始存在。