Безопасное прохождение сырого итератора в Java?

Я использую стороннюю библиотеку, которая возвращает необработанный итератор, например

Iterator<?> children = element.getChildElements();

Я знаю фактический тип, но не знаю Не обязательно доверять сторонней библиотеке, чтобы она использовалась в будущем. Есть два (которые я могу придумать) несколько рискованных способов обойти это:

@SuppressWarnings("unchecked")
Iterator<ActualObject> currentChildren = (Iterator<ActualObject>)currentElement.getChildElements();

или

Iterator<?> children = element.getChildElements();
while (null != children && children.hasNext()) {
  ActualObject child = (ActualObject)children.next(); //Possible ClassCastException @ runtime
  ...
}

Единственный «безопасный» способ, который я мог придумать для обхода такого итератора, - это следующий :

Iterator<?> children = element.getChildElements();
while (null != children && children.hasNext()) {
  Object obj = children.next();
  ActualObject child = null;
    if (obj instanceof ActualObject)
      child = (ActualObject)obj;
    ...
}

Это кажется слишком многословным. Есть ли лучший, но столь же «безопасный» способ обхода необработанного итератора?

РЕДАКТИРОВАТЬ: Я понимаю, что могу перехватить / зарегистрировать исключение в блоке else, Я искал (надеялся) на язык Java, эквивалентный тому, что ColinD упомянул ниже.

7
задан Justin Garrick 14 September 2010 в 20:54
поделиться