Collections.singleton()
で作業しているうちに、exptecedとして機能していないことがわかりました。あなたが表示された場合、すべての 要素がCollections.singleton()とforEachRemaining - Java 8
forEachRemaining
コードは任意の
exception
を投げなかったり
false
forEachRemaining
のJavaのドキュメントから
itr.hasNext()
上に戻ってもされていない後に以下のコードは、残りの各要素に対して特定のアクションを実行します
以下のコードの出し入れは以下のとおりです。真、elemはと私は私がこの動作を理解する助けてください偽、はNoSuchElementException
public class Test {
public static void main(String[] args) {
Collection<String> abc = Collections.singleton("elementsItr");
final Iterator<String> itr = abc.iterator();
try {
itr.forEachRemaining((e) -> {
throw new RuntimeException();
});
} catch (RuntimeException e) {
}
System.out.println(itr.hasNext());
System.out.println(itr.next());
}
}
を期待しています。
'forEachRemaining'は'それが呼び出す正確にどのような順序で指定していないようですhasNext() '、' next() '、そしてあなたのメソッド。 [javadoc](http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html#forEachRemaining-java.util.function.Consumer-)はデフォルトの実装を提供しますが、それは可能ですオーバーライドされる。あなたは実際の 'Iterator'クラスが何であるか分からず、' forEachRemaining'をオーバーライドすることができ、シングルトンのための特別な実装を持つことは理にかなっています。基本的に、これはあなたが数えるべきではない行動です。 – ajb
@ ajb--私はJavaのドキュメントをチェックしています。 デフォルトの実装は、次のように動作します。 while(hasNext()) アクション。accept(next()); –
あなたのesxceptionブロックも空ですので、例外がスローされているかどうかをどのように知っていますか? –