下面的最小示例很好地说明了我的问题:
name
这两个类data class OneThing(val x: Int, val y: Int, val foo: String)
data class ASimilarThing(val x: Int, val y: Int, val bar: String)
fun <THING> process(thing: THING) {
println(thing.x)
println(thing.y)
}
fun main() {
val oneThing = OneThing(1, 2, "hi")
val aSimilarThing = ASimilarThing(3, 4, "ho")
process(oneThing)
process(aSimilarThing)
}
和OneThing
来自一个库,因此无法更改它们。但是从语义上讲,它们是非常相似的,我想避免两次实现我的逻辑,所以我希望将其包含在通用ASimilarThing
函数中。
但是以上内容无法编译。(In C++ it is possible.)
有没有办法使process
工作?理想情况下,我正在寻找类似
process
但是这种语法不存在。
还有其他想法吗? :)