在我使用的library中有重载方法:
put(String key, Integer value)
put(String key, Long value)
put(String key, Double value)
put(String key, Float value)
我试图将String
置于Int
值但我收到以下错误:
Error:(41) ambiguous reference to overloaded definition,
both method put in class ContentValues of type (x$1: String, x$2: Double)Unit
and method put in class ContentValues of type (x$1: String, x$2: Float)Unit
match argument types (String,Long)
在这种情况下我该怎么办?
答案 0 :(得分:4)
您正在尝试放置Int
,但没有重载方法接受它,因此编译器尝试使用隐式转换。我的猜测是,它发现您可以隐式将其转换为Double
或Float
,但它不知道要使用哪一个。所以让我们帮忙吧:
val myJavaInteger: java.lang.Integer = myScalaInt
现在使用myJavaInterger调用put,不会产生混淆,因为有一个重载的put方法接受java.lang.Integer
。