Получить ссылку на метод из объекта java.lang.reflect.Method

Поскольку вопрос уже ответил, то лучший способ - использовать метод удаления объекта итератора, я хотел бы перейти к особенностям места, где была выбрана ошибка "java.util.ConcurrentModificationException".

Каждый класс коллекции имеет частный класс, который реализует интерфейс Iterator и предоставляет такие методы, как next(), remove() и hasNext().

Следующий код выглядит примерно так:

public E next() {
    checkForComodification();
    try {
        E next = get(cursor);
        lastRet = cursor++;
        return next;
    } catch(IndexOutOfBoundsException e) {
        checkForComodification();
        throw new NoSuchElementException();
    }
}

Здесь метод checkForComodification реализован как

final void checkForComodification() {
    if (modCount != expectedModCount)
        throw new ConcurrentModificationException();
}

Итак, как вы можете видеть, если вы явно попытаетесь удалить элемент из коллекции. Это приводит к тому, что modCount отличается от expectedModCount, что приводит к исключению ConcurrentModificationException.

0
задан BackSlash 15 January 2019 в 15:25
поделиться

1 ответ

BiConsumer<_notaFiscalServicoGeraServicosMov, Double> consumer = (instance, param) -> {
    try {
        methodInstance.invoke(instance, new Object[] {param});
    } catch (LotsOfExceptionsHere e) {
        throw new RuntimeException(e);
    }
};

, который должен это сделать. На самом деле другого пути нет.

0
ответ дан rzwitserloot 15 January 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: