调试时为什么价值结构不同?

时间:2017-10-02 00:03:29

标签: kotlin

我的环境:

  • 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. 在调试器中访问它
  3. 您也无法看到KParameter界面中的属性, 例如:nametype
  4. 这导致了一个非常混乱的开发周期。

    我的问题是: 这是一个错误吗?或故意设计或我做错了什么?

0 个答案:

没有答案