Kotlin,get [ ] 运算符上的 NoSuchMethodError

标签 kotlin nosuchmethoderror

我在 mine 的第三方库中有这段代码:

class Program {

    val uniforms = HashMap<String, Int>()    
    operator fun get(s: String) = uniforms[s]!!
}

当我使用[ ]时运算符

glUniformMatrix4fv(uniformColor.uniforms["cameraToClipMatrix"], 1, false, matBuffer)

我明白了:

Caused by: java.lang.NoSuchMethodError: glsl.Program.get(Ljava/lang/String;)I

为什么?

一切看起来都很好

uniformColor.uniforms.contains["cameraToClipMatrix"]

返回true,如果不是,它应该只返回null

我错过了什么?

kotlin 1.1-rc-91

最佳答案

这看起来像是 Kotlin 编译器中的一个错误。

Map.get 在 Java 中是 Object->Object,在 Kotlin 中是 K->V。

我怀疑它会导致实现生成 fun get(s: String):Any? 并调用站点尝试查找 fun get(s: String):Int

关于Kotlin,get [ ] 运算符上的 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503938/

相关文章:

android - 使用 TextView 方法获取 NoSuchMethodError

Java "NoSuchMethodError"

kotlin - <ClassName>.() 在 Kotlin 中是什么意思?

java - 如何解决 java.lang.NoSuchMethodError

Android Studio 2.3 : Could not initialize class org. jetbrains.kotlin.android.actions.NewKotlinActivityAction

java - 我无法提供 ViewModel

java - 解决Apache Spark中的依赖性问题

Java - .jar 库方法冲突?

android - Android Room强制通过自动增量值重写属性

android - 如何在Android studio中禁用折旧?