如何解决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
我既不可能推断前者,也不能推测后者。 尤其是我不明白哪里有两个这样的假设来自一个方法调用。
我通过删除有问题的线来“修复”它,但是我确定有人可以启发我。
问题是函数getFrameAfter
在kotlin.Array<java.lang.StackTraceElement?>
上定义,但是您试图在变量trace
上调用它,该变量的类型为kotlin.Array<java.lang.StackTraceElement>
。
我们已经修复了Kotlin Web Demo上的例子,所以你可以再试一次。