[关闭]
@xtccc 2015-12-24T03:17:04.000000Z 字数 848 阅读 2073

Scala与Java容器类型的转换

给我写信
GitHub

此处输入图片的描述

Scala




我们在JSON的处理中,给出了遍历一个Json String中各个key-value的方法,如下:

  1. public static void IterateJson(String json) {
  2. JsonParser parser = new JsonParser();
  3. JsonElement jsonElem = parser.parse(new StringReader(json));
  4. JsonObject jsonObj = (JsonObject)jsonElem;
  5. Set<Map.Entry<String, JsonElement>> ens = jsonObj.entrySet();
  6. for (Map.Entry<String, JsonElement> en : ens) {
  7. System.out.println(en.getKey() + " -> " + en.getValue());
  8. }
  9. }

以上代码是用Java写的,下面改为Scala:

  1. def IterateJson(json:String) {
  2. val parser:JsonParser = new JsonParser()
  3. val jsonElem:JsonElement = parser.parse(new StringReader(json))
  4. val jsonObj:JsonObject = jsonElem.asInstanceOf[JsonObject]
  5. val ens = jsonObj.entrySet
  6. for (en <- ens) {
  7. println(en.getKey() + " -> " + en.getValue());
  8. }
  9. }

此时,会有编译错误:

en的getKey和getValue无法识别

这是因为Scala和Java中容器类型的差异造成的,实际上我们可以引入import collection.JavaConversions._ 来对Scala的容器与Java的容器进行转换,可以参考Conversions Between Java and Scala Collections.

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注