gpt4 book ai didi

kotlin - 将泛型类型固定为第一个参数的类型

转载 作者:行者123 更新时间:2023-12-01 14:38:30 25 4
gpt4 key购买 nike

我想编写一个可用于任何类型的扩展函数,并接受相同类型或子类型的参数,但不是完全不同的类型。

我尝试了天真的方法,但没有成功:

fun <T> T.f(x: T) {
}

fun main(args: Array<String>) {
"1".f("1") // ok
"1".f(1) // should be error
}

似乎编译器只对 T 使用 Any。我希望 T 固定为接收器类型。

最佳答案

唯一的方法是告诉编译器你想要什么。

fun <T> T.f(x: T) {
}

为了使用它,您必须告诉 Kotlin 您想要的类型是什么。

"1".f<String>("2")  // Okay
"1".f(2) // Okay (see voddan's answer for a good explanation)
"1".f<String>(2) // Fails because 2 isn't a String
"1".f<Int>(2) // Fails because "1" isn't an Int

关于kotlin - 将泛型类型固定为第一个参数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38423531/

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