中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

scala 調用 java 方法參數匹配問題

發布時間:2020-08-07 16:04:07 來源:ITPUB博客 閱讀:175 作者:破棉襖 欄目:編程語言

scala調用java的FastJson時發生了一個方法參數匹配問題:

scala和java幾乎沒有區別,可以互相調用。注意這里說的是幾乎,總有那么少數,出人意料的驚喜在告訴你,scala就是scala。

例子:


  1. import com.alibaba.fastjson.JSON


  2. var map:scala.collection.mutable.HashMap[String,Any] = scala.collection.mutable.HashMap()
  3. map += ("name" -> "wzx")
  4. map += ("age" -> 18)
  5. val javaMap = JavaConversions.asJavaMap(map)
  6. val jsonStr = JSON.toJSONString(javaMap)
上面代碼是將map轉為json字符串,但是編輯器會編譯不過,異常如下:

  1. ambiguous reference to overloaded definition, both method toJSONString in object JSON of type (x$1: Any, x$2: com.alibaba.fastjson.serializer.SerializerFeature*)String and method toJSONString in object JSON of type (x$1: Any)String match argument types (java.util.Map[String,Any])
FastJson代碼:

  1.     public static String toJSONString(Object object) {
  2.         return toJSONString(object, emptyFilters, new SerializerFeature[0]);
  3.     }

  4.     public static String toJSONString(Object object, SerializerFeature... features) {
  5.         return toJSONString(object, DEFAULT_GENERATE_FEATURE, features);
  6.     }
錯誤的原因很明顯,編譯器在編譯scala調用java依賴包里面的toJSONString函數時發生了歧義


java重載調用規則:
  • 調用方法時,能與固定參數函數以及可變參數都匹配時,優先調用固定參數方法。
  • 調用方法時,兩個變長參數都匹配時,編譯無法通過。
scala重載調用規則:
  • 調用方法時,scala首先會自己匹配,自己匹配不了的時候,使用者可以手動來標識變參參數

總結:
     scala調用java異常,可能是scala編譯器和java編譯器處理此問題的差異導致。




向AI問一下細節
推薦閱讀:
  1. Scala學習筆記
  2. scala

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武胜县| 永胜县| 仁布县| 阜阳市| 高清| 福贡县| 雷山县| 新沂市| 张家川| 永和县| 四会市| 梨树县| 珠海市| 新竹市| 驻马店市| 丰原市| 盘锦市| 荆州市| 庄浪县| 涟水县| 绵阳市| 通道| 陵水| 桃园县| 大宁县| 垣曲县| 观塘区| 麻阳| 合山市| 滕州市| 渑池县| 天长市| 临汾市| 尉犁县| 旬邑县| 安陆市| 阿尔山市| 丘北县| 辽中县| 南澳县| 凌源市|