我的环境:
我有一个简单的功能:
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
等这导致了一个非常混乱的开发周期。
我的问题是: 这是一个错误吗?或故意设计或我做错了什么?