我需要通过以下方法使用 java-legacy 代码:
public void doit(Map <String, Object> vals) {...}
我的斯卡拉代码:
var map = new java.util.HashMap[String, Any]
map += "testme" -> 'X'
doit(map)
产量 =>
类型不匹配; 找到:java.util.HashMap[String, Any] 需要:java.util.HashMap[java.lang.String, java.Object]
所以我把它改成:
var map = new java.util.HashMap[java.lang.String, Object]
map += "testme" -> 'X'
doit(map)
产量 =>
类型不匹配; found : Char required: java.lang.Object 注意:原始类型不会隐式转换为 AnyRef。您可以通过强制转换 x.asInstanceOf[AnyRef] 来安全地强制装箱。
所以最后我想出了以下几点:
var map = new java.util.HashMap[java.lang.String, Object]
map += "testme" -> 'X'.asInstanceOf[AnyRef]
doit(map)
有没有更简洁的方法来处理这个问题?