我有一个函数,它可以是许多不同的类,包含许多字段(open,high,low,close),类包含其他字段,但是我不想为每个要Map的类写一个函数,有没有一种方法,允许指定字段而不得到“未解析的引用”
fun createTA4JBarsFromAlgobars(timebars: List<Any?>, name: String): BaseBarSeries? {
val series = BaseBarSeriesBuilder().withName(name).build()
//all it.unixSecond etc. Get unresolved reference with compiling
timebars.map { series.addBar(utilService.unixtimeToZoneDateTime(it.unixSecond), it.open, it.high, it.low, it.close, it.volume) }
return series
}
1条答案
按热度按时间lmvvr0a81#
有理由拥有
List<Any>
是极其罕见的。(在使用Java和Kotlin的12年中,我不记得曾经这样做过。)如果您想从列表中的所有项中获取某个属性,应该让它们都继承自定义这些属性的公共接口。然后你可以创建一个接口类型的列表,并放入各种不同类的示例,这些示例都符合该接口。例如:在您的情况下,如果每个类类型没有
high
、low
等属性,而是以各种不同的方式添加到图表中,则可以创建一个公共接口,用于将示例添加到图表中,例如:你也不正确地使用了
map
。它不是为了产生副作用。它是为了创建一个不同类型的新列表。你应该使用for循环来代替。