質問: Iteratorのnextメソッドによる繰り返し処理で、それ以上要素がない場合、NoSuchElementExceptionがスローされると思いますが、nullが返ってくる時代がありましたでしょうか? ご存知の方、情報提供をよろしくお願いします。
回答: 「差し支えない」について。 「null=終了はあり得るか」という話だったので、「Iterator I/Fとしては違うが、そう実装されているクラスが現実にあるかもしれない、実装できないものではない」という感じ。 「制約なんぞ気にしないでいい、読む側使う側に全く影響はない」と言うつもりではなかったが、そう誤解させていたら失礼。 私自身はそうしたくない(nullは返さない)し、今までそんなことはしてない...はず。 ただし、他者、とくに赤の他人が既に実装したものについて、敢えて何か言おうとは思わないということ。 何らか保険は欲しい(JavaDocに明示する、ソースに「この文書を参照しろ」etc.)としても、それ以上は期待しない。 とはいえ、#next()でnullを返さないと「使う側がうまくいかない」ケースは、正直 先に挙げたことくらいしか思い付かないな...。 >、JDK1.2や1.3の時代にnullを返していたことがあれば これに答えられてないな。 バージョンアップしてもソースをそのまま使えることが前提なJavaの標準ライブラリにおいて、I/F自体にそんな重大な変更を加えることはまずないように思う...とくにnullは正常値なんだし。 一部の標準クラスがそう実装されていた可能性は否定できないにしても(@氏が言うとおり明らかに不具合だ)、IteratorをhasNext()→next()で使うことは大前提なので、露見する可能性は低かった気がする。