我想创建可从 Java 访问的 Kotlin 实用程序,将字符串列表转换为映射。到目前为止我已经写过:
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 中找到一些相当于收集功能的东西?
最佳答案
Map.Entry - stdlib - Kotlin Programming Language是一个接口(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
。
关于java - Kotlin 将字符串数组映射并缩减为 Map<String, Any!>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39228972/