我尝试在类型A
已经固定Int
一个子类覆盖此方法如果通用类型已经修复,如何用隐式参数覆盖泛型方法?
def sum[B >: A](implicit num: Numeric[B]): B = ...
。
我已经尝试过
override def sum: Int = ...
但这并不覆盖,当然,导致了不同的方法解析基于在运行时动态类型。
进一步说,
def sum[B >: Int](implicit num: Numeric[B]): Int
不覆盖,而
def sum[B >: Int](implicit num: Numeric[Int]): Int
不,还有
def sum(implicit num: Numeric[Int]): Int
为什么是这样呢?是否有可能摆脱多余的限制B
?
我不确定哪些类型和implicits我可以省略和什么必须留,以便该方法仍然覆盖。
的确如此。我觉得有趣的是,即使情况很好(在我的答案中,类别'C2扩展了C1'和'D2扩展了D1'),它仍然是*非法改变签名。 –
在D上,我认为你是对的,原因是它会使超载的规则变得糟糕。在C上,我不知道。你甚至可以考虑一个通用结果被非泛型下界替代。但是,编写泛型参数没有不良后果。所以也许它不配有一个特别的规则来允许这样做? –