Kotlin泛型函数类型返回子类

Kotlin泛型函数类型返回子类,kotlin,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)) pr

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

范例

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)

你要找的是自引用泛型

abstract class Base<B : Base<B>> {
  abstract fun add(other: B): B
}
data class A(...) : Base<A>
data class B(...) : Base<B>
抽象类基类{
抽象趣味添加(其他:B):B
}
数据类A(…):基本
数据类B(…):基本

您是想让
add
返回正确的类型,还是自动找出如何添加两个
A
s?add应该返回正确的类型,并确保该类是的子类Base@Keyute你能详细解释一下为什么你的例子中不存在
add
method返回类型吗?这给了我一个错误,一个类型参数应该用于classFixed这个打字错误。这个解决方案当然解决了我问题的第一部分。问题是,add函数是否可能不是抽象的,因为它使用反射来完成任务?不,您描述的类型不可能。好的,建议的解决方案工作得很好。非常感谢。