Моя среда:
У меня есть функция, которая проста:
fun generateValue(param:KParameter):Any? { // do something here }
Проблема в
Когда я отлаживаю эту функцию, скажем, поставим точку останова в ее теле. И посмотрите на значение param
.
Он имеет совершенно иную структуру, чем интерфейс KParameter
.
KParameter
:
public interface KParameter : KAnnotatedElement { public val index: Int public val name: String? public val type: KType public val kind: Kind public enum class Kind { INSTANCE, EXTENSION_RECEIVER, VALUE, } public val isOptional: Boolean @SinceKotlin("1.1") public val isVararg: Boolean }
И реальная ценность, по крайней мере, от отладчика – это объект, тип которого – KParameterImpl , я думаю, что это фактическая реализация этого интерфейса?
Но что еще хуже:
expression evaluation
поскольку он не включен в интерфейс. Например, даже вы видите, что есть свойство A со значением 1
в отладчике, но вы не можете получить к нему доступ в отладчике, набрав param.A
KParameter
, такие как: name
, type
и т. Д. Это приводит к очень запутанному циклу разработки.
Мой вопрос: это ошибка? или преднамеренный дизайн, или я сделал что-то неправильно?