java.lang.Iterator
인터페이스에는 hasNext
, next
및 remove
의 세 가지 메소드가 있습니다. 읽기 전용 이터레이터를 구현하려면 hasNext
및 next
중 2 개를 구현해야합니다.java.lang.Iterator 구현시 예외 사항 수행
제 문제는 이러한 메서드는 예외를 선언하지 않는다는 것입니다. 따라서 반복 프로세스 내의 코드가 예외를 선언하면 반복 코드를 try/catch 블록으로 묶어야합니다.
내 현재 정책은 RuntimeException
에 포함 된 예외를 다시 제기했습니다. 그러나 검사 된 예외가 손실되고 클라이언트 코드가 더 이상 해당 예외를 명시 적으로 catch 할 수 없기 때문에 문제가 발생합니다.
Iterator 클래스에서이 제한을 해결하려면 어떻게해야합니까? 여기
명확성에 대한 샘플 코드 :class MyIterator implements Iterator
{
@Override
public boolean hasNext()
{
try
{
return implementation.testForNext();
}
catch (SomethingBadException e)
{
throw new RuntimeException(e);
}
}
@Override
public boolean next()
{
try
{
return implementation.getNext();
}
catch (SomethingBadException e)
{
throw new RuntimeException(e);
}
}
...
}
UI 클라이언트 코드를 제어 할 수없는 또 다른 옵션은 getter 또는 무언가가 액세스 할 수있는 어딘가에 예외를 등록하거나 콜백 인터페이스 또는 사용자가 제어하는 대상을 등록하고 어디에서나 오류를 표시 할 수있는 반복기를 만듭니다. 이것이 유용하다면, 단순히 런타임 예외 처리기 반복자를 래핑하고 속성 또는 콜백 인터페이스로 리디렉션하는 모든 위장 가능한 예외를 잡는 "CatcherIterator"를 만들 수 있습니다. – helios