public interface NamingEnumeration<T> extends Enumeration<T>
当一个方法如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()来检查是否已经到达枚举结束来避免此异常。
如果在枚举期间抛出异常,枚举将无效。 随后调用该枚举的任何方法将产生未定义的结果。
Modifier and Type | Method and Description |
---|---|
void |
close()
关闭此枚举。
|
boolean |
hasMore()
确定枚举中是否有更多的元素。
|
T |
next()
检索枚举中的下一个元素。
|
hasMoreElements, nextElement
T next() throws NamingException
请注意, next()还可以抛出运行时异常NoSuchElementException来指示调用者尝试枚举超出枚举结束。 这与NamingException不同,NamingException表示获取下一个元素有问题,例如,由于引用或服务器不可用等原因。
NamingException
- 如果在尝试检索下一个元素时遇到命名异常。
有关可能的命名异常,请参阅NamingException及其子类。
NoSuchElementException
- 如果在没有可用时尝试获取下一个元素。
Enumeration.nextElement()
boolean hasMore() throws NamingException
NamingException
- 如果在尝试确定枚举中是否有其他元素时遇到命名异常。
有关可能的命名异常,请参阅NamingException及其子类。
Enumeration.hasMoreElements()
void close() throws NamingException
该方法向服务提供商指示可以释放与枚举相关联的资源,并可以通知服务器取消任何未完成的请求。 close()方法是管理其资源的实现的提示。 在客户端省略close()电话时,鼓励实施使用适当的算法来管理资源 。
NamingException
- 如果在关闭枚举时遇到命名异常。