Interface NamingEnumeration<T>
Interface NamingEnumeration
public interface NamingEnumeration<T>
extends Enumeration<T>
이 인터페이스는 javax.naming 및 javax.naming.directory 패키지의 메서드가 반환하는 목록을 열거(enumerate)하기 위한 것이에요. 열거 중에 예외가 던져질 수 있도록 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()로 열거의 끝에 도달했는지 확인해 항상 이 예외를 피할 수 있어요. 열거 중에 예외가 던져지면 열거는 무효가 돼요. 그 열거에 대한 이후의 어떤 메서드 호출도 정의되지 않은 결과를 낳을 거예요.
next
T next()
throws NamingException
열거의 다음 요소를 가져와요. 이 메서드는 다음 요소를 가져오는 동안 만난 네이밍 예외를 애플리케이션이 잡아 처리할 수 있게 해 줘요. next()는 호출자가 열거의 끝을 넘어 열거하려고 한다는 것을 나타내는 런타임 예외 NoSuchElementException을 던질 수도 있다는 점에 주의하세요. 이것은 다음 요소를 얻는 데 문제가 있었다는 것을 나타내는 NamingException(예: referral이나 서버 가용 불능으로 인한)과는 달라요.
- Returns: 열거의, null일 수 있는 요소. null은 null을 반환할 수 있는 열거에만 유효해요(예:
Attribute.getAll()은 속성 값의 열거를 반환하며, 속성 값은 null일 수 있음) - Throws: NamingException - 다음 요소를 가져오려는 동안 네이밍 예외가 발생했을 때. 가능한 네이밍 예외는
NamingException과 그 하위 클래스 참조 - See Also: Enumeration.nextElement()
hasMore
boolean hasMore()
throws NamingException
열거에 요소가 더 있는지 결정해요. 이 메서드는 더 많은 요소가 있는지 결정하는 동안 만난 네이밍 예외를 애플리케이션이 잡아 처리할 수 있게 해 줘요.
- Returns: 열거에 더 있으면 true, 그렇지 않으면 false
- Throws: NamingException - 열거에 다른 요소가 있는지 결정하려는 동안 네이밍 예외가 발생했을 때. 가능한 네이밍 예외는
NamingException과 그 하위 클래스 참조 - See Also: Enumeration.hasMoreElements()
close
void close()
throws NamingException
이 열거를 닫아요. 이 메서드가 이 열거에서 호출된 후에는 열거가 무효가 되고 이후의 어떤 메서드 호출도 정의되지 않은 결과를 낳을 거예요. 이 메서드는 리소스를 해제하기 위해 열거를 중단하는 용도예요. 열거가 끝까지 진행되면 — 즉 hasMoreElements()나 hasMore()가 false를 반환할 때까지 — 리소스가 자동으로 해제되며 close()를 명시적으로 호출할 필요가 없어요. 이 메서드는 서비스 공급자에게 열거와 연관된 리소스를 해제해도 좋다는 것을 나타내고, 서버에 보류 중인 요청을 취소하도록 알릴 수 있어요. close() 메서드는 리소스 관리를 위한 구현에 대한 힌트예요. 구현들은 클라이언트가 close() 호출을 생략할 때 리소스를 관리하기 위한 적절한 알고리즘을 사용하도록 권장돼요.
- Throws: NamingException - 열거를 닫는 동안 네이밍 예외가 발생했을 때
- Since: 1.3