【问题标题】:How to solve ambiguous reference to overloaded definition如何解决对重载定义的模糊引用
【发布时间】:2014-12-06 21:28:18
【问题描述】:

在我使用的library中有重载方法:

  • put(String key, Integer value)
  • put(String key, Long value)
  • put(String key, Double value)
  • put(String key, Float value)

我正在尝试将 StringInt 值放在那里,但出现以下错误:

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)

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

【问题讨论】:

    标签: android scala types casting type-conversion


    【解决方案1】:

    您正在尝试输入Int,但没有采用该方法的重载方法,因此编译器尝试使用隐式转换。我的猜测是,它看到您可以将其隐式转换为DoubleFloat,但它不知道使用哪一个。所以让我们帮助它:

    val myJavaInteger: java.lang.Integer = myScalaInt
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2020-06-15
      • 1970-01-01
      • 2018-07-24
      相关资源
      最近更新 更多