Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin,get[]运算符上的NoSuchMethodError_Kotlin_Nosuchmethoderror - Fatal编程技术网

Kotlin,get[]运算符上的NoSuchMethodError

Kotlin,get[]运算符上的NoSuchMethodError,kotlin,nosuchmethoderror,Kotlin,Nosuchmethoderror,我在第三部分库中有此代码: 我明白了: 原因:java.lang.NoSuchMethodError:glsl.Program.get(Ljava/lang/String;)I 为什么? 一切似乎都很好 uniformColor.uniforms.contains["cameraToClipMatrix"] 返回true,如果不是,则只返回null 我错过了什么 class Program { val uniforms = HashMap<String, Int>()

我在第三部分库中有此代码:

我明白了:

原因:java.lang.NoSuchMethodError:glsl.Program.get(Ljava/lang/String;)I

为什么?

一切似乎都很好

uniformColor.uniforms.contains["cameraToClipMatrix"]
返回true,如果不是,则只返回
null

我错过了什么

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"])

}

kotlin 1.1-rc-91

看起来像是kotlin编译器中的一个bug

Java中的get是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"])

}
类程序{
val=HashMap()
操作员乐趣获取(s:String):Int=uniforms[s]!!
}
趣味主线(args:Array){
val程序=程序()
节目。制服。放(“你好”,42)
println(程序[“hello”])
}

这看起来像是RC版本上的一个bug,在v1.0.6中可以正常工作。有人为此提交了bug报告吗?如果删除
[]
操作符上的
:Int
(并可能将其作为依赖项添加),则此功能无效哦,对。删除显式类型并从另一个文件中使用它确实会给我带来您面临的错误。更新:Kotlin 1.1刚刚发布,我无法再重现该问题。不幸的是,我仍然可以。。哦,没关系,我现在仔细检查了一下,结果我把测试搞砸了。仍然崩溃。很抱歉
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"])

}