Это известная проблема? Мне не удалось найти результаты поиска.Проблемы с повторным итератором ServiceLoader
При повторном выполнении ServiceLoader, когда итерация уже выполняется, первая итерация будет прервана. Например, предполагая, что существует, по крайней мере, две реализации Foo
, следующий код будет терпеть неудачу с AssertionError:
ServiceLoader<Foo> loader = ServiceLoader.load(Foo.class);
Iterator<Foo> iter1 = loader.iterator();
iter1.next();
Iterator<Foo> iter2 = loader.iterator();
while (iter2.hasNext()) {
iter2.next();
}
assert iter1.hasNext();
Это только кажется, произойдет, если второй итератор действительно заканчивается. Код может преуспеть в этом варианте, например:
ServiceLoader<Foo> loader = ServiceLoader.load(Foo.class);
Iterator<Foo> iter1 = loader.iterator();
iter1.next();
Iterator<Foo> iter2 = loader.iterator();
iter2.next();
assert iter1.hasNext();
Это ошибка или функция? : p
Есть ли билет для этого уже в любом месте?
Вы пытались найти базу данных об ошибках? –
Да, но ничего не найдено – buge
Итак, нормальный ход действий при поиске ошибки без отчета об ошибке будет представлять отчет об ошибке. –