如何解决对重载定义的模糊引用

时间:2014-12-06 21:28:19

标签: android scala types casting type-conversion

在我使用的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)

在这种情况下我该怎么办?

1 个答案:

答案 0 :(得分:4)

您正在尝试放置Int,但没有重载方法接受它,因此编译器尝试使用隐式转换。我的猜测是,它发现您可以隐式将其转换为DoubleFloat,但它不知道要使用哪一个。所以让我们帮忙吧:

val myJavaInteger: java.lang.Integer = myScalaInt

现在使用myJavaInterger调用put,不会产生混淆,因为有一个重载的put方法接受java.lang.Integer