我有一个函数,它采用metadata
两种可能类型的参数:Metadata1 或 Metadata2。我正在尝试编写一个可用于两者的实用程序函数,因为有大量的代码重用。它们都有一个 DataPoint 对象列表,每个对象都有 name() 方法。
我认为在我的代码中 Kotlin 会使用类型推断来知道它dataPoints
只能是两种都具有 DataPoint.name() 方法的类型之一,但我得到的是“未解析的引用:名称”。我怎样才能使这个函数足够通用以适用于 Metadata1 和 Metadata2?
var dataPoints: List<Any>
if (metadata is Metadata1) {
dataPoints = metadata.metadata1().dataPoints()
} else {
dataPoints = (metadata as Metadata2).metadata2().dataPoints()
}
if (data.size > 1) {
textView.test = dataPoints.fold("")
{ x, dataPoint ->
x + dataPoint.name() + " \n" // unresolved reference: name
}
}