Kotlin映射&减少字符串的数组映射到<String,Any!>
我想要创建Kotlin实用程序,可以从Java将字符串列表转换为Map。 到目前为止,我写了:
class Utils { companion object { @JvmStatic fun values(item: GSAItem): Map<String, Object> { return item.itemDescriptor.propertyNames.map {it -> Map.Entry<String, Any!>(it, item.getPropertyValue(it)) }; } } }
但是我得到错误
Error:(16, 74) Kotlin: Unresolved reference: Entry
GSAItem.getPropertyValue是以String作为参数并返回Object的Java方法。 之后,我怀疑我需要找到一些等同于Java 8的收集功能?
Map.Entry – stdlib – Kotlin编程语言是一个interface
,因此它没有一个构造函数,这就是为什么你得到一个错误(也许不是最好的消息)。 你可以找到一个实现,做你自己的,或使用associate
而不是:
class Utils { companion object { @JvmStatic fun values(item: GSAItem): Map<String, Any?> { return item.itemDescriptor.propertyNames.associate { it to item.getPropertyValue(it) } } } }
请注意,你应该使用Any
或Any?
而不是java.lang.Object
。
怎么样这样的事情:
item.itemDescriptor .propertyNames .map { name -> name to item.getPropertyValue(name) } .toMap()