java - 如何将 Scala Map 转换为 Java Map
问题描述
我正在尝试从 2 个 Java 类创建 Scala 映射:
TopicPartition (java.lang.String topic, int partition)
OffsetAndMetadata (long offset)
这看起来正确吗?
val topicPartition = new TopicPartition("sometopicname", 99)
val offsetAndMetadata = new OffsetAndMetadata(999999L,"tette")
val mapTopicOffset = Map(topicPartition -> offsetAndMetadata)
还需要创建一个将接受此地图作为输入参数的方法。
尝试过类似的东西:
def commitSync(offsets: Map[TopicPartition, OffsetAndMetadata] ) = {
}
得到错误:
Error:(239, 37) type mismatch;
found : Map[org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata] (in scala.collection.immutable)
required: Map[org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata] (in java.util)
verify(kc, times(1)).commitSync(mapTopicOffset)
有没有办法提供将采用 scala 映射的重载方法?(不知道怎么写)
或者也许一切都应该以不同的方式重写(从创建对象等开始)?
解决方案
由于各种原因,Scala 拥有自己的标准库,包括自己的集合库,其中包含许多与 Java 中的名称相似甚至完全相同的数据结构。不幸的是,您没有提供最小、完整和可验证的示例,因此我们必须猜测修复它的正确方法到底是什么。
如果代码的双方实际上都是 Scala,只需声明
commitSync
使用scala.collection.immutable.Map
. 如果导入中存在冲突,您可以使用包的全名或将其中一个重命名为Map
明确的名称(例如JMap
和/或SMap
),如此处所示。如果这是关于 Scala 和 Java 代码之间通信的问题,那么 Scala 为这两种转换提供了包装器和转换器,例如 scala.collection.JavaConverters或scala.collection.JavaConversions(在 Scala 2.12 中已弃用,取而代之的是第一个)。
推荐阅读
- r - 如何使用 R 中的 timevis 更改时间轴中每个组的背景颜色
- amazon-web-services - 删除网络负载均衡器 (NLB) 时出错:无法删除,因为它当前与另一个服务相关联
- python - 如何将匹配索引与两个熊猫数据框合并
- javascript - GET 重定向的 Swagger UI CORS 错误
- php - PHP 7.4 钠扩展
- font-face - 如何修复 PageSpeed 中的“确保文本在 webfont 加载 bootstrap-icons.woff 期间保持可见”错误
- tensorflow - 我正在我的 react-native 项目中实现 tensorflow camerawithtensors 但是在这里当我阅读 Image Tensor 它没有拍摄完整的图像
- azure - 使用 Azure cli/PowerShell 获取 Cosmos DB 帐户主帐户密钥/主连接字符串
- reactjs - 如何以 React json 形式制作模式依赖项以显示在一行中
- wordpress - 如何从wordpress中的用户ID数组中获取用户列表