scala 呼叫 java 方法引數匹配問題
scala呼叫java的FastJson時發生了一個方法引數匹配問題:
scala和java幾乎沒有區別,可以互相呼叫。注意這裡說的是幾乎,總有那麼少數,出人意料的驚喜在告訴你,scala就是scala。
例子:
-
import com.alibaba.fastjson.JSON
-
var map:scala.collection.mutable.HashMap[String,Any] = scala.collection.mutable.HashMap()
-
map += ("name" -> "wzx")
-
map += ("age" -> 18)
-
val javaMap = JavaConversions.asJavaMap(map)
- val jsonStr = JSON.toJSONString(javaMap)
- 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])
-
public static String toJSONString(Object object) {
-
return toJSONString(object, emptyFilters, new SerializerFeature[0]);
-
}
-
-
public static String toJSONString(Object object, SerializerFeature... features) {
-
return toJSONString(object, DEFAULT_GENERATE_FEATURE, features);
- }
java過載呼叫規則:
- 呼叫方法時,能與固定引數函式以及可變引數都匹配時,優先呼叫固定引數方法。
- 呼叫方法時,兩個變長引數都匹配時,編譯無法透過。
-
呼叫方法時,scala首先會自己匹配,自己匹配不了的時候,使用者可以手動來標識變參引數。
總結:
scala呼叫java異常,可能是scala編譯器和java編譯器處理此問題的差異導致。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29754888/viewspace-2134577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Scala呼叫Java類Java
- 函式呼叫引數變數傳值的問題函式變數
- Scala版本與Java版本不匹配導致的找不到主類問題Java
- Java包呼叫問題Java
- Scala模式匹配模式
- java呼叫不了你本以為有的方法的問題Java
- 【Scala之旅】型別引數型別
- Java中形式引數與返回值問題Java
- spring呼叫帶引數的oracle函式應注意的問題SpringOracle函式
- Oracle Extent引數問題Oracle
- 聊聊 scala 的模式匹配模式
- Scala模式匹配詳解模式
- java函式陣列引數的複製問題Java函式陣列
- Java方法05:可變引數Java
- C#通過反射獲取類中的方法和引數個數,反射呼叫方法帶引數C#反射
- 引數匹配模型——Python學習之引數(二)模型Python
- 使用java模擬scala函數語言程式設計將函式作為引數傳入方法中Java函數程式設計函式
- 字串匹配問題字串匹配
- Javascript 定時器呼叫傳遞引數的方法JavaScript定時器
- Java呼叫儲存過程(帶輸出引數)Java儲存過程
- Java方法04:命令列傳遞引數、可變引數Java命令列
- scala模式匹配詳細解析模式
- 引數匹配順序——Python學習之引數(三)Python
- Java的方法可變長引數Java
- Scala(一):函式、流程控制、引數函式
- 字串匹配模式問題字串匹配模式
- 用C#呼叫C++DLL時的字串指標引數傳遞問題C#字串指標
- 命令列引數 opencv呼叫命令列OpenCV
- 一起學Scala 模式匹配模式
- 學習scala,java安裝jdk及jre的問題JavaJDK
- Java中方法引數傳遞詳析Java
- Java處理正則匹配卡死(正則回溯問題)Java
- Java高頻面試題分享(四)——方法的引數傳遞機制Java面試題
- Scala - 隱式轉換和隱式引數
- Scala隱式轉換與隱式引數
- cxf webservice 生成wsdl方法引數名稱為arg0問題Web
- dwr框架帶引數,而且有返回值的方法呼叫框架
- bash 引數替換中的模式匹配模式