Java Itérateur de mise en œuvre - next() et hasNext() l'exécution de l'ordre

J'ai une mise en œuvre de java.util.Iterator qui nécessite que l'appel à next() doit toujours être précédé par un appel à hasNext(). (C'est parce que les résultats sont renvoyés asynchronosly dans un environnement multithread et il n'est jamais évident de savoir comment beaucoup plus de résultats, il pourrait être).

Serait-il être "correct" pour bien documenter ce dans la JavaDoc et puis jetez un RuntimeException si cela a été violé. Ou est-ce l'étirement de l'interface Iterator un peu trop loin?

Toutes les pensées apprécié?

Après réflexion, et toutes les réponses que je suis venu à la conclusion que le problème est l'interface Iterator. Il devrait y avoir qu'une méthode next() qui renvoie la valeur null (ou une pilule empoisonnée) lorsqu'il a atteint la fin. Êtes-vous d'accord?
Je suis en désaccord. Tout d'abord, null pourrait être un élément d'un objet iterable. Deuxièmement, compte tenu de type générique d'effacement, comment vous assurez-vous que votre pilule empoisonnée était de type T, mais de toute façon pas un valide valeur de retour? (Je rejette d'emblée toute argumentation où next() ne retourne pas une instance de type T).
Je prends vos points, mais ne pense pas qu'un objet de type Poison ferait aucun mal, même si elle n'est pas de type T. L'alternative (le fait d'avoir deux méthodes) est de loin le pire.
L'nuire à l'objet spécial de type Poison serait la cause de forcer le type de retour de la next() pour changer de T à l'Objet. Qui à son tour serait la cause de tous les appels à côté de faire appel à un instanceOf suivie par un casting. De plus modérément de la taille du projet, c'est une énorme quantité de code réutilisable (exactement le même standard que les génériques étaient censés se débarrasser de dans le la première place. Je ne comprends pas votre problème avec les deux méthodes à la solution, ce qui a un facile de comprendre la méthode pour la vérification des limites, et déclenche une exception lorsque vous faites quelque chose de stupide.
Par la Pilule empoisonnée type, parlez-vous de l'Objet Nul Motif?

OriginalL'auteur Dan | 2010-02-01