模块  java.naming
软件包  javax.naming

Interface NamingEnumeration<T>

  • All Superinterfaces:
    Enumeration<T>

    public interface NamingEnumeration<T>extends Enumeration<T>
    此接口用于枚举javax.naming和javax.naming.directory包中的方法返回的列表。 它扩展了Enumeration以允许在枚举期间抛出异常。

    当list(),listBindings()或search()等方法返回NamingEnumeration时,遇到所有遇到的异常,直到返回所有结果。 在枚举结束时,抛出异常(通过hasMore());

    例如,如果list()仅返回部分答案,则相应的异常将是PartialResultException。 list()首先返回一个NamingEnumeration。 当NamingEnumeration的next()返回最后一个结果时,调用hasMore()将导致抛出PartialResultException。

    在另一个示例中,如果使用指定大小限制“n”调用search()方法。 如果答案包含多于'n'个结果,则search()将首先返回NamingEnumeration。 当通过在NamingEnumeration上调用next()返回第n个结果时,将在调用hasMore()时抛出SizeLimitExceedException。

    请注意,如果程序使用hasMoreElements()和nextElement()来代替迭代NamingEnumeration,因为这些方法不能抛出异常,所以不会抛出异常。 相反,在前面的示例中,在nextElement()返回第n个结果之后,调用hasMoreElements()将返回false。

    另请注意,如果程序在枚举中没有剩余元素时调用next()或nextElement(),则抛出NoSuchElementException。 程序总是可以通过使用hasMore()和hasMoreElements()来检查是否已到达枚举的结尾来避免此异常。

    如果在枚举期间抛出异常,则枚举变为无效。 对该枚举的任何方法的后续调用将产生未定义的结果。

    从以下版本开始:
    1.3
    另请参见:
    Context.list(javax.naming.Name)Context.listBindings(javax.naming.Name)DirContext.search(javax.naming.Name, javax.naming.directory.Attributes, java.lang.String[])Attributes.getAll()Attributes.getIDs()Attribute.getAll()
    • 方法详细信息

      • next

        T next()throws NamingException
        检索枚举中的下一个元素。 此方法允许命名在检索应用程序捕获和处理的下一个元素时遇到的异常。

        请注意, next()还可以抛出运行时异常NoSuchElementException,以指示调用者在枚举结束后尝试枚举。 这与NamingException不同,后者表示在获取下一个元素时存在问题,例如,由于引用或服务器不可用等原因。

        结果
        枚举中可能为null的元素。 null仅对可返回null的枚举有效(例如,Attribute.getAll()返回属性值的枚举,属性值可以为null)。
        异常
        NamingException - 如果在尝试检索下一个元素时遇到命名异常。 有关可能的命名异常,请参阅NamingException及其子类。
        NoSuchElementException - 如果没有可用的话,尝试获取下一个元素。
        另请参见:
        Enumeration.nextElement()
      • hasMore

        boolean hasMore()         throws NamingException
        确定枚举中是否还有其他元素。 此方法允许在确定是否有更多元素要由应用程序捕获和处理时命名遇到的异常。
        结果
        如果枚举中有更多内容,则为true; 否则是假的。
        异常
        NamingException - 如果在尝试确定枚举中是否存在其他元素时遇到命名异常。 有关可能的命名异常,请参阅NamingException及其子类。
        另请参见:
        Enumeration.hasMoreElements()
      • close

        void close()    throws NamingException
        关闭此枚举。 在此枚举上调用此方法后,枚举变为无效,并且随后调用其任何方法将产生未定义的结果。 此方法用于中止枚举以释放资源。 如果枚举进行到最后 - 即hasMoreElements()hasMore()返回false - 资源将自动释放,无需显式调用close()

        此方法向服务提供商指示可以释放与枚举关联的资源,并且可以通知服务器取消任何未完成的请求。 close()方法提示管理其资源的实现。 当客户端忽略close()调用时,鼓励实现使用适当的算法来管理其资源。

        异常
        NamingException - 如果在关闭枚举时遇到命名异常。
        从以下版本开始:
        1.3