Почему структура значений отличается при отладке?

Моя среда:

  • JDK 1.8
  • IDEA Ultimate 2017.2.5
  • Плагин Kotlin 1.1.51-release-IJ2017.2-1

У меня есть функция, которая проста:

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 , я думаю, что это фактическая реализация этого интерфейса?

Но что еще хуже:

  1. Вы не можете получить доступ к своим членам в отладчике с помощью expression evaluation поскольку он не включен в интерфейс. Например, даже вы видите, что есть свойство A со значением 1 в отладчике, но вы не можете получить к нему доступ в отладчике, набрав param.A
  2. Вы также не можете видеть свойства из интерфейса KParameter , такие как: name , type и т. Д.

Это приводит к очень запутанному циклу разработки.

Мой вопрос: это ошибка? или преднамеренный дизайн, или я сделал что-то неправильно?

Intereting Posts
Невозможно настроить Realm в проекте с помощью Kotlin Неявный возврат из лямбда в Котлине Схема SwitchPreference не корректна, пока не постукивается Невозможно запустить глобальное приложение hello, как показано в O'Reilly – Введение в программирование Kotlin Каково ключевое слово typeof kotlin-андроид-расширения в ViewHolder Приложение Kotlin не показывает мой json-массив Интеграция Котлина в Java-коде? В Kotlin, как я могу обойти конфликты наследуемых объявлений, когда класс enum реализует интерфейс? Querydsl – результат разделения на два или более объекта Почему Kotlin позволяет иметь два класса с одинаковым именем и пакетом в разных папках (например, main и androidTest)? Текст мигает в Android, с наиболее кратким Kotlin Как использовать setter как obj.value = "", когда у setter есть возвращаемое значение? "Convert" Просмотреть класс для аннотации андроида Android: выполнение Kotlin завершилось неудачно, пытаясь использовать Databinding