我想创建可从Java访问的Kotlin实用程序,它将字符串列表转换为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是Java方法,该方法将String作为参数并返回Object。之后,我怀疑我需要从Java 8中找到一些等效的collect函数吗?
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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句