Kotlin,get [ ] 运算符上的 NoSuchMethodError
Kotlin, NoSuchMethodError on the get [ ] operator
我在 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"]
return是真的,如果不是,它应该只是 return null
我错过了什么?
科特林 1.1-rc-91
这看起来像是 Kotlin 编译器中的错误。
Map.get
在Java中是Object->Object,在Kotlin中是K->V。
我怀疑它导致实现生成 fun get(s: String):Any?
并且调用站点试图找到 fun get(s: String):Int
.
这是我尝试过的示例,它适用于 1.1.0-rc-91 上的我(即使从 Java 调用它)。我错过了什么?
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"])
}
我在 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"]
return是真的,如果不是,它应该只是 return null
我错过了什么?
科特林 1.1-rc-91
这看起来像是 Kotlin 编译器中的错误。
Map.get
在Java中是Object->Object,在Kotlin中是K->V。
我怀疑它导致实现生成 fun get(s: String):Any?
并且调用站点试图找到 fun get(s: String):Int
.
这是我尝试过的示例,它适用于 1.1.0-rc-91 上的我(即使从 Java 调用它)。我错过了什么?
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"])
}