以下内容:
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
。
干杯
答案 0 :(得分:0)
trait Product extends Any with Equals
trait Equals extends Any
在这里,您可以看到Product
未扩展AnyRef
而不是从AnyRef
派生,因此它并不比Product
更具体,编译器无法在其中进行选择。但Any
是Any
的子类,因此它比results_shown
更具体,这就是您的另一个变体成功编译的原因。