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) } } } } 

请注意,你应该使用AnyAny? 而不是java.lang.Object

怎么样这样的事情:

 item.itemDescriptor .propertyNames .map { name -> name to item.getPropertyValue(name) } .toMap()