无法编译为什么下面没有在斯卡拉编译:为什么超载具有不同的上限多态的方法斯卡拉
class A
class B
object X {
def f[Q <: A](q: Q): Q = q
def f[Q <: B](q: Q): Q = q
}
与错误信息
<console>:16: error: method f is defined twice
conflicting symbols both originated in file '<console>'
def f[Q <: B](q: Q): Q = q
据我了解,类型擦除后, def f[Q <: A](q: Q): Q
应相应地替换为其上限:def f(q: A): Any
和第二个超载f
。所以他们应该在类型擦除后区分。
那么为什么Scala会抱怨呢?
我发现这个旧帖子似乎是一样的问题。 http://www.scala-lang.org/old/node/4625.html – mdm
因此,在阅读完该线程后,这意味着它只是“Scala编译器中的一个bug,它可能永远不会被修复;但希望能在Dotty中工作。另外,如果您将此评论重新发布为答案,我会接受它作为正确答案。 –