Kotlin,get 运算符上的NoSuchMethodError
我在我的第三部分库中有这个代码:
class Program { val uniforms = HashMap<String, Int>() operator fun get(s: String) = uniforms[s]!! }
当我使用[ ]
运算符
glUniformMatrix4fv(uniformColor.uniforms["cameraToClipMatrix"], 1, false, matBuffer)
我得到这个:
引起:java.lang.NoSuchMethodError:glsl.Program.get(Ljava / lang / String;)I
为什么?
一切似乎都很好
uniformColor.uniforms.contains["cameraToClipMatrix"]
返回true,否则返回null
我错过了什么?
kotlin 1.1-rc-91
这看起来像Kotlin编译器中的一个错误。
Java中的Map.get
是Map.get
> Object,而Kotlin则是K-> V.
我怀疑这会导致实现生成fun get(s: String):Any?
并调用网站试图找到fun get(s: String):Int
。
这是我尝试的例子,它适用于我(即使从Java调用它)在1.1.0-RC-91。 我错过了什么?
class Program { val uniforms = HashMap<String, Int>() operator fun get(s: String): Int = uniforms[s]!! } fun main(args: Array<String>) { val program = Program() program.uniforms.put("hello", 42) println(program["hello"]) }