Изменить kotlin val в отладчике

Как изменить val свойство (не переменную метода) в отладчике?

Да я знаю что val конечный аналог

Точка останова здесь:

Код с точкой останова

Set value отключено в контекстном меню:

Контекстное меню

Оценивать не работу:

Окно оценки


person Nick    schedule 12.04.2019    source источник
comment
Тогда вы должны знать, что не можете изменить окончательное присвоенное значение, если вы каким-то образом взломать что-нибудь вместе с отражением. Это окончательно по причине   -  person Zoe    schedule 12.04.2019


Ответы (3)


В отладчике выберите значение, используйте контекстное меню, щелкнув правой кнопкой мыши, чтобы выбрать "установить значение..." (сочетание клавиш по умолчанию F2). Теперь значение переменной должно отображаться в текстовом поле. Введите желаемое значение и нажмите Enter, чтобы изменить значение. Вам нужно только ввести значение, а не присвоение (например, x = "test" неверно, просто введите значение "test"). Измененное значение теперь применяется к полю.

В отладчике также можно изменить значения неизменяемых val определенных значений в Kotlin, так же как можно изменить значение final определенных переменных в Java.

person Simulant    schedule 12.04.2019
comment
спасибо, но это не работает со свойством val. я обновляю вопрос - person Nick; 22.05.2019
comment
Нет, это невозможно для val - person Le_Enot; 18.11.2019

Это можно сделать с помощью отражения.
Просто откройте меню "Вычислить выражение" и введите:
val field = Main::class.java.getDeclaredField("b")
field.isAccessible = true
field.set(b, true)

person Le_Enot    schedule 18.11.2019

Я смог изменить значение val на лету, используя «оценить и зарегистрировать». Проверьте полный ответ введите здесь описание изображения

person Islam Salah    schedule 13.02.2020