如何创建从泛型类继承的泛型类型并在 kotlin 中调用它?

问题描述 投票:0回答:0

kotlin
我想了解
<T : Person<T>>
使用
method2
.

open class Person<T>
class Worker : Person<Int>()

fun <T : Comparable<T>> method1(x: T, y: T, z: T) {}
fun <T : Person<T>> method2(x: T, y: T, z: T) {}

fun main() {
    val result1 = method1(1, 2, 3) //It's OK

    val result2 = method2(Person<Int>, Person<Int>, Person<Int>) //compile error
    val result3 = method2(Worker(), Worker(), Worker()) //compile error
}
  1. 为什么
    result1
    有效而
    result2
    result3
    无效?
  2. 使用'generic extends generic'是不可能的吗?像这样:
    <T : Person<T>>
  3. 如果不是这样,我怎么能在没有编译错误的情况下调用
    method2
  4. 如果不可能调用
    method2
    为什么kotlin让我写这个方法没有编译错误? (错误是我调用函数的地方,而不是我定义它的地方)
kotlin generics recursion subclass extends
© www.soinside.com 2019 - 2024. All rights reserved.