java - Kotlin 将字符串数组映射并缩减为 Map<String, Any!>

标签 java kotlin

我想创建可从 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) }
        }
    }
}

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

关于java - Kotlin 将字符串数组映射并缩减为 Map<String, Any!>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39228972/

相关文章:

kotlin - Jetpack Compose 中的装饰框 BasicTextField

java - Java中的Varargs到ArrayList问题

flutter - 服务器发送请求后运行功能的最佳方法是什么?

java - Weblogic 应用程序从同一 web 应用程序中的其他 jar 加载实用程序 jar 类

java - Android:响应式用户界面的最佳实践

json - 使用 kotlinx.serialization 库反序列化具有不同值类型的 JSON 数组

functional-programming - Kotlin Either monad:重构构造函数调用以处理CPS

java - Google Play 拒绝了适用于全屏正确 DHU 型号的 Android Auto 应用程序

java - 通过使用动态代理,有没有办法返回一个类型与代理接口(interface)的方法签名不匹配的对象?

java - 尝试使用 ViewPager 和 GridView 在 android 中创建图片库时出现错误