Kotlin 泛型函数类型返回子类

时间:2021-05-06 00:14:28

标签: kotlin

我正在尝试创建一个类,在该类中可以对继承自它的类执行通用操作。我曾尝试使用密封类、内联函数但没有成功,希望有人能对此提供一些见解。

示例

class Base {
    fun add // does the operation
}
data class A(val a: Int, val b: Int) : Base
data class B(val c: Int, val d: Int) : Base
val example =  A(1,2)
example.add(A(3,4))
println(example)
// A(4,6)
val example2 = B(5,6)
example2.add(B(7,8))
println(example2)
// B(12, 14)

1 个答案:

答案 0 :(得分:0)

您正在寻找的是自引用泛型。

abstract class Base<B : Base<B>> {
  abstract fun add(other: B): B
}
data class A(...) : Base<A>
data class B(...) : Base<B>