Променете 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