言語

ServiceLoader.Iterator メソッド

定義

このローダーのサービスの使用可能なプロバイダーを遅延読み込みます。

[Android.Runtime.Register("iterator", "()Ljava/util/Iterator;", "")]
public Java.Util.IIterator? Iterator();
[<Android.Runtime.Register("iterator", "()Ljava/util/Iterator;", "")>]
abstract member Iterator : unit -> Java.Util.IIterator
override this.Iterator : unit -> Java.Util.IIterator

返品

このローダーのサービスのプロバイダーを遅延読み込みする反復子

実装

属性

注釈

このローダーのサービスの使用可能なプロバイダーを遅延読み込みます。

このメソッドによって返される反復子は、まず、インスタンス化順序でプロバイダー キャッシュのすべての要素を生成します。 その後、残りのプロバイダーを遅延読み込んでインスタンス化し、各プロバイダーをキャッシュに順番に追加します。

エラーを実現するには、使用可能なプロバイダー構成ファイルを解析し、プロバイダーをインスタンス化する実際の作業を反復子自体で行う必要があります。 そのため、プロバイダー構成ファイルが指定された形式に違反している場合、またはプロバイダー クラスが見つからずインスタンス化できないプロバイダー クラスに名前を付ける場合、またはクラスのインスタンス化の結果がサービスの種類に割り当てることができない場合、または次のプロバイダーが見つかり、インスタンス化されたときに他の種類の例外やエラーがスローされた場合は、その java.util.Iterator#hasNext hasNext メソッドと java.util.Iterator#next next メソッドが ServiceConfigurationError をスローする可能性があります。 堅牢なコードを記述するには、サービス反復子を使用するときに ServiceConfigurationError をキャッチするだけで済みます。

このようなエラーがスローされた場合、反復子の後続の呼び出しでは、次に使用可能なプロバイダーを見つけてインスタンス化するためのベスト エフォートが行われますが、一般的にこのような回復は保証されません。

<blockquote style="font-size: smaller;行の高さ: 1.2"><span style="padding-right: 1em; font-weight: bold">Design Note</span> このような場合にエラーをスローすると極端に見える場合があります。 この動作の根拠は、形式が正しくないクラス ファイルのような形式が正しくないプロバイダー構成ファイルは、Java仮想マシンの構成方法または使用方法に重大な問題があることを示しています。 そのため、回復を試みたり、さらに悪いことにサイレント に失敗したりするのではなく、エラーをスローすることをお勧</blockquote>

このメソッドによって返される反復子は、削除をサポートしていません。 java.util.Iterator#remove() remove メソッドを呼び出すと、UnsupportedOperationExceptionがスローされます。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象