Scala 对重载定义的引用不明确

Scala 对重载定义的引用不明确,scala,Scala,以下是: object SomeObj { def addVertex(cc: Product): String = ??? def addVertex(cc: AnyRef): String = ??? } case class Toto(s: String) SomeObj.addVertex(Toto("")) 他正在做: Error:(8, 10) ambiguous reference to overloaded definition, both method addVe

以下是:

object SomeObj {
  def addVertex(cc: Product): String = ???
  def addVertex(cc: AnyRef): String = ???
}

case class Toto(s: String)

SomeObj.addVertex(Toto(""))
他正在做:

Error:(8, 10) ambiguous reference to overloaded definition,
both method addVertex in object SomeObj of type (cc: Object)String
and  method addVertex in object SomeObj of type (cc: Product)String
match argument types (A$A34.this.Toto)
SomeObj.addVertex(Toto(""));}
        ^
为什么??它不应该是最具体的吗?
有趣的是,使用
Any
而不是
AnyRef
可以工作

干杯

在这里您可以看到,
Product
并没有扩展
AnyRef
,也不是从中派生出来的,因此它并不比
AnyRef
更具体,编译器无法从中进行选择。但是
Product
Any
的子类,因此它比
Any
更具体,这就是为什么您的另一个变体编译成功的原因


在这里您可以看到,
Product
并没有扩展
AnyRef
,也不是从中派生出来的,因此它并不比
AnyRef
更具体,编译器无法从中进行选择。但是
Product
Any
的一个子类,因此它比
Any
更具体,这就是为什么您的另一个变体编译成功的原因。

不太可能,您的示例对我来说没有提到的错误。您使用的是什么版本的Scala?不完全是,您的示例对我来说没有提到的错误。您使用的是什么版本的Scala?
trait Product extends Any with Equals 
trait Equals extends Any