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"]) }
- 我可以用Codename One使用Kotlin吗?
- 如何从多个json API获取数据
- 如何在Android Studio中附加Kotlin的源代码?
- “对于超类型的Kotlin Android Studio的直接争论,不允许有预测
- Android Studio 3.0 – 无法找到方法'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()Ljava / util / List'
- 不可空的getter的可空字段
- 即使使用noarg插件,也没有使用Kotlin的JPA实体的默认构造函数
- Kotlin从Java访问内部类中的常量
- Kotlin使用Room persistence lib进行代理