語言

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因此,若提供者設定檔違反指定格式,或命名無法找到並實例化的提供者類別,或實例化該類別的結果無法指派到服務類型,或在尋找並實例化下一個提供者時拋出其他異常或錯誤,其 and java.util.Iterator#next next 方法可拋出 aServiceConfigurationError。 要撰寫穩健的程式碼,只需在使用服務迭代器時捕捉 ServiceConfigurationError 。

若發生此類錯誤,迭代器的後續呼叫將盡力尋找並實例化下一個可用提供者,但一般而言無法保證此類復原。

<blockquote style=“font-size: smaller;行高:1.2“>< 跨度 風格=”右邊填充:1 em;字體粗細:粗體“> 設計說明</跨度> 在這些情況下丟出錯誤可能看起來過於誇張。 這種行為的理由是,錯誤的提供者設定檔,如同格式不佳的類別檔案,顯示 Java 虛擬機的配置或使用方式存在嚴重問題。 因此,寧可投出錯誤,也不要嘗試恢復,甚至更糟的是默默失敗。</區塊引用>

此方法回傳的迭代器不支援移除。 啟動其 java.util.Iterator#remove() remove 方法會導致 被 UnsupportedOperationException 拋棄。

的 java.util.ServiceLoader.iterator()Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於