Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Scala似乎无法将可变的映射转换为Java映射

Scala似乎无法将可变的映射转换为Java映射
EN

Stack Overflow用户
提问于 2017-01-09 06:40:54
回答 1查看 1.6K关注 0票数 1

我在Scala应用程序中使用了一个Java POJO:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class AppRuntimeContext {
  // Lots of stuff...
  public Map<Object,Object> contextMap;

  // Getters & setters, ctors, etc.  
}

在我的Scala应用程序中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val ctx : AppRuntimeContext = new AppRuntimeContext()
val ctxMap : Map[String,Fizz] = Map()
// Some code that populates 'ctxMap'
ctx.setContextMap(ctxMap)

这会在setter方法上产生一个编译器错误:

类型不匹配;找到: scala.collection.mutable.MapString,com.me.myapp.Fizz required: java.util.MapObject,Object

因此,我尝试通过添加以下导入语句将ctxMap转换为java.util.Map

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import collection.JavaConversions._

然后将setter调用更改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ctx.setContextMap(mapAsJavaMap(ctxMap))

但是,当我这样做时,仍然会得到一个编译器错误:

类型不匹配: scala.collection.mutable.MapString,com.me.myapp.Fizz required: scala.collection.MapObject,Object : String <:Object,但特征映射在类型A中是不变的。您可能希望研究通配符类型,例如_ <:Object。(补充劳工3.2.10)

知道是什么导致了这个错误吗?修复是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-09 06:53:33

一种选择是将映射转换为Map[Object, Object]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ctx.setContextMap(mapAsJavaMap(ctxMap.asInstanceOf[mutable.Map[Object, Object]]))

更好的方法可能是首先将ctxMap声明为Map[Object, Object],尽管这将允许放置不符合预期[String, Fizz]类型的对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val ctxMap : mutable.Map[Object, Object] = mutable.Map()
// Some code that populates 'ctxMap'
ctxMap.put("k", Fizz(1))

ctx.setContextMap(mapAsJavaMap(ctxMap)) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41550434

复制
相关文章
Scala基础——Map(映射)
Scala映射(Map)是一组键/值对的对象。键在映射中是唯一的,但值不一定是唯一的。映射也称为哈希表。映射有两种,不可变的和可变的。默认情况下,Scala使用不可变映射(Map)。如果要使用可变集合(Map),则需要明确导入scala.collection.mutable.Map类
羊羽shine
2019/08/12
4160
scala快速入门系列【映射】
本篇作为scala快速入门系列的第十五篇博客,为大家带来的是关于映射的相关内容。
大数据梦想家
2021/01/26
3830
scala快速入门系列【映射】
Python和Scala的集合和映射
在入门系列的最后,让我们来看看基于hash表的两种常见的数据结构,集合和映射。在Scala里的集合和映射,这两种数据结构都有可变和不可变的两种版本,区别仅仅在于类的继承关系。而Python的集合也有可变和不可变两种,内置的字典则是只有一种,但是在types模块里有基于字典的MappingProxyType的不可变的只读视图。
哒呵呵
2018/08/06
6020
如何使用Hibernate映射文件将Java类映射到数据库表
上述示例中,<class>元素定义了Employee类和Department类与数据库表的映射关系,<id>元素定义了主键字段的映射,<property>元素定义了普通字段的映射,<many-to-one>元素定义了多对一关系的映射。
堕落飞鸟
2023/05/15
1.1K0
docker端口映射无法外部访问_docker用户映射
容器中可以运行一些应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。
全栈程序员站长
2022/11/02
1.8K0
Java之映射
集是一个集合,它可以快速地查找现有的元素。但是,要查看一个元素,需要有要查找元素的精确副本。这不是一种非常通用的查找方式,因为在集合中查找元素总是要遍历集合。通常,我们知道某些键的信息,并想要查找与之对应的元素。映射(map)数据结构就是为此而设计的。映射用来存放键/值对。如果提供了键,就能够查找到值。它们之间是一一对应关系。
kirin
2020/08/19
1.2K0
PHP转Go系列:map映射
初识映射会很懵,因为在PHP中没有映射类型的定义。其实没那么复杂,任何复杂的类型在PHP中都可以用数组表示,映射也不例外。
平也
2020/04/03
1.2K0
java之hiberante之集合映射之list映射
1.通常对于集合,在hibernate中的处理都是使用set来完成。但是hibernate也提供了对于其他几种集合的映射。
Vincent-yuan
2019/09/11
7300
java之hiberante之集合映射之list映射
java映射(map用法)
主要分三类:集合(set)、列表(List)、映射(Map) 1.集合:没有重复对象,没有特定排序方式 2.列表:对象按索引位置排序,可以有重复对象 3.映射:有一个键对象和一个值对象,键不可重复,值可以重复
用户3030674
2018/09/14
1.6K0
Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)
别先生
2018/01/02
2.8K0
Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)
Kotlin和Java的映射关系
基本类型 Java type Kotlin type byte kotlin.Byte short kotlin.Short int kotlin.Int long kotlin.Long char
码客说
2020/07/03
1.1K0
mysql、Java、mabatis的字段映射
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106445.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/04
1.4K0
mysql、Java、mabatis的字段映射
关于MARATHON和容器的端口映射 转
前不久解决一个问题,我的docker因为网路环境的原因,只能采用-net=host的网络模式运行,但是这样在做服务发现这块就不方便了。因为如果采用这个模式,marathon会自动给启动的容器分派一个端口,这个端口不管你用不用,他就放在哪里,这样在宿主机上就有一个端口被占用了。当然如果你不在他给你分派的这个端口是那个启动什么服务,他的却也没啥,但是就是要启动服务,而且还要使用他分派的这个指定端口,那怎么办呢?
domain0
2018/08/02
1K0
java map 转string_java-将Map <String,Object>转换为Map <String,String>
Map map = new HashMap(); //Object is containing String
全栈程序员站长
2022/08/25
12.3K0
Java 数据表映射
一对多映射 class Province { //每一个类就相当于数据库中的一个表; private int pid ; private String name ; private City cities [] ; //一对多 //setter getter 无参构造 略~ public Province(int pid , String name) { this.pid = pid ; this.name = nam
Mirror王宇阳
2020/11/10
2.4K0
docker端口映射无法访问的解决
systemctl status docker,显示正常,可以pull,push,build
全栈程序员站长
2022/11/02
4.3K0
什么是映射?如何清晰的理解映射?
我们在计算机科学和数学里经常用到映射概念,这里打个比方就容易理解了 不废话 直接作出最直白的解释 : 生活里存在大量的对应 : 比如一个人的身份证号对应一个人 一张电影票对应一个人  一个丈夫配一个妻子 或者一个丈夫配多个妻子??!!(对,就是你脑补的那些画面) 说白了 映射就是一种特殊的对应关系 生活里 一箭射一只鸟 多箭射一只鸟 一箭射多只鸟 映射里 每一箭必须射到鸟 还不能一箭射多只鸟 对的 就跟你这个单身狗一样 家里催着你必须结婚 还只能结一个 在计算机科学里就相应的这么理解: 映射就是将两个对象对
kirin
2020/08/19
2.2K0
ElasticSearch 动态映射与静态映射
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2020/11/26
2.8K0
ElasticSearch 动态映射与静态映射
MyBatis 数组映射 与 集合映射
Integer addApiRequestParam(List<ApiRequestParam> apiRequestParam); <insert id="addApiRequestParam" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="groupID"> INSERT INTO eo_api_request_param(paramName,paramKey,paramKeyAl
红目香薰
2022/11/28
1.4K0
XStream将XML映射到对对象
该文介绍了如何利用XStream框架对XML文件进行解析和处理,并基于此框架实现一个简单的Java对象序列化和反序列化程序。
用户1171305
2017/12/28
9380

相似问题

将Java映射转换为Scala映射

43

Scala:将java映射列表转换为scala映射

10

如何从可变的Java映射构建Scala不可变映射?

21

Scala:迭代可变映射的映射

23

Scala -可变映射

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文