如何解决Kotlin Web Demo中的这个错误?

我是Kotlin的一个真正的n00b,刚刚开始演示 。

问题的解决方案是微不足道的,但有一个错误

private fun assertEquals<T>(actual : T?, expected : T?, message : Any? = null) { if (actual != expected) { errors++ println("Test failed") val trace = Thread.currentThread()?.getStackTrace()!! if (trace.size > 6) { // Finding relevant stack frames val location = trace.getFrameAfter("runs.Tester", "expect") // ERROR HERE val function = trace.getFrameAfter("runs.TesterRunner", "forFunction") // AND HERE println("at ${function?.getClassName()}.${function?.getMethodName()}(line:${location?.getLineNumber()})") } if (message != null) println(message) } else if (!skipSuccessful) println("OK") } 

我不明白。 它说

  Type mismatch: inferred type is kotlin.Array<java.lang.StackTraceElement> but kotlin.Array<java.lang.StackTraceElement?> was expected 

我既不可能推断前者,也不能推测后者。 尤其是我不明白哪里有两个这样的假设来自一个方法调用。

我通过删除有问题的线来“修复”它,但是我确定有人可以启发我。

问题是函数getFrameAfterkotlin.Array<java.lang.StackTraceElement?>上定义,但是您试图在变量trace上调用它,该变量的类型为kotlin.Array<java.lang.StackTraceElement>

我们已经修复了Kotlin Web Demo上的例子,所以你可以再试一次。