如何处理 NamingEnumeration<SearchResult> 类型(基本 Java,LDAP)

How to handle NamingEnumeration<SearchResult> type (Basic Java, LDAP)

我想在 LDAP 服务器中查找数据。当我使用下面的代码时,它希望我有 NamingEnumeration(不是 List、HashMap),它还强制我使用 SearchResult 类型。

NamingEnumeration<SearchResult> values =
dirContext.search("cn=Loggers,cn=config", "(objectClass=*)", searchCtls);

当我尝试使用它时,由于它是 NamingEnumeration 类型,我不知道如何将其更改为 String。有没有办法将它转换为字符串?我想使用 split() 但它不是字符串,所以似乎不起作用。

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() and 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
}

"enhanced for statement (sometimes called the "for-each 循环“语句)”不能用于它们,因为它们实现了 Enumeration instead of the Iterable-接口。其原因主要是历史原因,NamingEnumeration 自 Java 1.3 以来存在,Iterable 自 Java 1.5 以来存在。