我的应用程序在LDAP服务器上搜索人员。

return ldapTemplate.search("", "(objectclass=person)", new AttributesMapper() {
      public Object mapFromAttributes(Attributes attrs)
                                                     throws NamingException {

        return attrs.get("cn").getAll();
      }
    });

它返回NamingEnumeration对象的列表,其中包含 vector 。每个 vector 可以包含一个或多个值。
我可以通过此代码打印人名
for(NamingEnumeration ne : list){
  while (ne.hasMore()) {
      System.out.println("name is : " + ne.next().toString());
    }
  }

因为我的ldap搜索可以包含多个值,所以它出现在NamingEnumeration对象内的vector中。我如何从中获得多个值(value)。

最佳答案

当您使用的像这样的java.util.Listjavax.naming.NamingEnumeration<java.util.Vector>时,

List<NamingEnumeration<Vector>> list

您应该能够遍历每个Vector中的NamingEnumeration:
for (NamingEnumeration<Vector> ne : list) {
    while (ne.hasMore()) {
        Vector vector = ne.next();
        for (Object object : vector) {
            System.out.println(object);
        }
    }
}

请注意,尽管并未弃用 Vector ,但许多人认为ojit_a已过时。同样,封闭的集合可以使用类型参数。如果您有选择,请考虑以下替代方法之一:
List<NamingEnumeration<Vector<T>>>
List<NamingEnumeration<List<T>>>

关于java - 从NamingEnumeration中提取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8487544/

10-08 22:50