Module java.naming
Package javax.naming

Interface NamingEnumeration<T>

类型参数:
T - 此枚举返回的元素类型
所有超接口:
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
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    close()
    关闭此枚举。
    boolean
    确定枚举中是否还有更多元素。
    T
    next()
    检索枚举中的下一个元素。

    Methods declared in interface java.util.Enumeration

    asIterator, hasMoreElements, nextElement
  • Method Details

    • next

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

      请注意,next()也可以抛出运行时异常NoSuchElementException,表示调用者正试图枚举超出枚举末尾。这与NamingException不同,后者表示在获取下一个元素时出现问题,例如由于引荐或服务器不可用等。

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

      boolean hasMore() throws NamingException
      确定枚举中是否还有更多元素。此方法允许应用程序捕获并处理确定是否还有更多元素时遇到的命名异常。
      返回:
      如果枚举中还有更多元素,则返回true;否则返回false。
      抛出:
      NamingException - 在尝试确定枚举中是否还有另一个元素时遇到命名异常。请参阅NamingException及其子类以获取可能的命名异常。
      参见:
    • close

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

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

      抛出:
      NamingException - 在关闭枚举时遇到命名异常。
      自版本:
      1.3