ServiceLoader.Iterator Метод

Определение

Lazily загружает доступных поставщиков службы этого загрузчика.

[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

Возвращаемое значение

Итератор, который лениво загружает поставщиков для службы загрузчика.

Реализации

Атрибуты

Комментарии

Lazily загружает доступных поставщиков службы этого загрузчика.

Итератор, возвращаемый этим методом, сначала выдает все элементы кэша поставщика в порядке создания экземпляра. Затем она загружает и создает экземпляры всех оставшихся поставщиков, добавляя каждый из них в кэш в свою очередь.

Чтобы добиться лени, фактические действия по анализу доступных файлов конфигурации поставщика и создания экземпляров поставщиков должны выполняться самим итератором. Таким java.util.Iterator#hasNext hasNext образом, его методы java.util.Iterator#next next могут вызывать ServiceConfigurationError исключение, если файл конфигурации поставщика нарушает указанный формат, или если он называет класс поставщика, который не может быть найден и создан, или если результат создания экземпляра класса не может быть назначен типу службы, или если какой-либо другой вид исключения или ошибки возникает, так как следующий поставщик находится и создается экземпляр. Чтобы написать надежный код, необходимо перехватывать ServiceConfigurationError только при использовании итератора службы.

Если такая ошибка возникает, последующие вызовы итератора будут выполнять лучшие усилия для поиска и создания экземпляра следующего доступного поставщика, но в целом такое восстановление не может быть гарантировано.

<blockquote style="font-size: small; высота линии: 1.2"span style="><padding-right: 1em; font-weight: bold">Design Note</span> Throwing a error в этих случаях может показаться экстремальным. Обоснованием этого поведения является то, что файл конфигурации с неправильно сформированным поставщиком, например файл неправильно сформированного класса, указывает на серьезную проблему с способом настройки или использования виртуальной машины Java. Так как это предпочтительнее, чтобы вызвать ошибку, а не попытаться восстановить или, еще хуже, завершиться автоматически.</blockquote>

Итератор, возвращаемый этим методом, не поддерживает удаление. Вызов метода java.util.Iterator#remove() remove приведет UnsupportedOperationException к возникновению ошибки.

Java документации по java.util.ServiceLoader.iterator().

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Применяется к