Установите значение последнего поля в режиме отладки в IntelliJ IDEA - PullRequest
1 голос
/ 06 мая 2020

Я отлаживаю метод в IntelliJ IDEA, и в режиме отладки мне нужно установить значение последнего поля. Можно ли каким-то образом добиться?

Это образ моей IDE в режиме отладки, я пытаюсь изменить значение переменной collectionId.

IDE

1 Ответ

2 голосов
/ 06 мая 2020

IntelliJ IDEA (и Java API отладчика) не поддерживает . Комментарий ответственного разработчика:

В Java JDI-коде (com.sun.tools.jdi.ObjectReferenceImpl#setValue) есть проверка, не позволяющая изменять значение последнего поля, добавлено длинное go.

ObjectReferenceImpl.java # L236 :

        // Make sure the field is valid
        ((ReferenceTypeImpl)referenceType()).validateFieldSet(field);

ReferenceTypeImpl.java # L614 :

    void validateFieldSet(Field field) {
        validateFieldAccess(field);
        if (field.isFinal()) {
            throw new IllegalArgumentException("Cannot set value of final field");
        }
    }

Причина, по которой это не разрешено, заключается в том, что изменение полей final может привести к несогласованности в поведении: некоторые значения могут быть уже «встроены» компилятором и не будут изменены.

...