我在 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/