Как работать с типом NamingEnumeration <SearchResult>(Basic Java, LDAP) - PullRequest
0 голосов
/ 08 января 2019

Я хочу посмотреть данные на сервере LDAP. Когда я использую следующий код, он хочет, чтобы у меня был NamingEnumeration (не List, HashMap), а также заставляет меня использовать тип SearchResult.

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

Когда я пытаюсь его использовать, так как это тип NamingEnumeration, я не знаю, как изменить это на String. Есть ли способ привести его к 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? Если есть много способов, я хочу знать.

1 Ответ

0 голосов
/ 09 января 2019

Обычный способ итерации 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 (иногда называемый оператором« для каждого цикла »)» не может использоваться для них, потому что они реализуют Enumeration вместо Iterable -интерфейс. Причина этого в основном историческая, NamingEnumeration существует с Java 1.3, Iterable с Java 1.5.

...