亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

锡林郭勒盟| 西华县| 容城县| 黔西县| 珲春市| 龙泉市| 新昌县| 姜堰市| 中阳县| 沙坪坝区| 临沂市| 开鲁县| 色达县| 临海市| 渭南市| 绥滨县| 古浪县| 安溪县| 广河县| 崇明县| 平武县| 长岭县| 宜川县| 长汀县| 青田县| 全南县| 大姚县| 凤庆县| 乳源| 翁牛特旗| 密云县| 庄河市| 广灵县| 镇巴县| 社旗县| 凤城市| 贵德县| 紫金县| 吐鲁番市| 常德市| 霍林郭勒市|