Kotlin中的泛型问题

时间:2018-10-03 06:53:40

标签: generics kotlin

我正在尝试做一个通用类,但是我无法获得“ funTestInterface”来停止要求“ Nothing”,有人知道为什么会发生这种情况吗?谢谢!

https://docs.google.com/gview?embedded=true&url=http://54.64.229.48/dev/sites/default/files/final_features%2520for%2520Oh%252527%2520My%2520Concierge_29_06_2018.pdf

2 个答案:

答案 0 :(得分:0)

GeneralClass应该是

class GeneralClass {
fun otro(param: ITest<String>, secondParam: Any) {
    param.funTestInterface(secondParam as String)
}
}

答案 1 :(得分:0)

您要在此处使用star-projections。您可以将param与星形投影一起使用,以仅安全地从中读取值(可以将其用作输出类型),但是在这种情况下,星形被视为输入类型。编译中的星形被视为类型Nothing,它不等于Any。话虽如此,您不能将Any用作funTestInterface的输入。

您可以通过生成GeneralClass.otro()函数来解决此问题:

fun <T> otro(param: ITest<T>, secondParam: T) {
    param.funTestInterface(secondParam)
}