我嘗試在類型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上,我不知道。你甚至可以考慮一個通用結果被非泛型下界替代。但是,編寫泛型參數沒有不良後果。所以也許它不配有一個特別的規則來允許這樣做? –