gpt4 book ai didi

kotlin - 如果在 Kotlin 中泛型是 Int,泛型如何工作?

转载 作者:行者123 更新时间:2023-12-03 16:32:18 24 4
gpt4 key购买 nike

我试图制作抽象类进行测试,因为我发现使用泛型的奇怪问题

abstract class Test<T> {
open fun hello(vararg data: T) {
print("Default function")
}
}
这个非常简单的抽象类有一个打开的方法 可变参数 关键词。可以通过创建另一个扩展 Test 类的类来重现问题。
class Hello : Test<Int>() {
//Problem 1
override fun hello(vararg data: Int) {
super.hello(*data) //Problem 2
println("Override function")
}
}
关于第一个问题,Kotlin 说方法不会覆盖任何东西,即使这个方法肯定会覆盖某些东西。奇怪的是,这个错误是随机发生的,所以我不知道重现这个错误的确切方法
Kotlin can't recognize codes
当我添加一些代码(比如非常简单的代码,如 println() 等)时,这个错误被删除了,但是当你编译时,它又会导致同样的错误。
关于第二个问题, super.hello(*data)导致问题,因为这需要 Array<out Int> ,但发现参数是 IntArray .我认为 Kotlin 正在考虑 IntArrayArray<*>作为不同的类,但它不应该像这样......
enter image description here
我正在使用 Kotlin 1.4.10,根据 this,它似乎是最新版本地点。
我发布这个是为了检查这两个问题是否是错误,或者我是否做错了什么,因为当我将通用更改为 String 时,所有问题都会被删除。
我在上面的这些示例代码中有什么错误吗?

最佳答案

已知问题:https://youtrack.jetbrains.com/issue/KT-9495
作为解决方法,您可以使用盒装 java.lang.Integer .

class Hello : Test<Integer>() {
override fun hello(vararg data: Integer) {
super.hello(*data)
println("Override function")
}
}

关于kotlin - 如果在 Kotlin 中泛型是 Int,泛型如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64833758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com