下面的代碼給出了一個錯誤:Scala和爪哇 - 隱參數和繼承
package test
trait Base {
def method:String
}
trait Trait extends Base {
def method()(implicit i:String):String = { "2" }
}
object Object extends Trait {
}
錯誤是「對象創建不可能的,因爲在類型的Base類方法方法=>字符串沒有定義」
上述錯誤是由下面的代碼
package test
trait Base {
def method:String
}
trait Trait extends Base {
def method:String = method()("String") // Over loading
def method()(implicit i:String):String = { "2" }
}
object Object extends Trait {
}
現在不是Scala的類固定的,當我定義的Java接口作爲FOL低點:
// Java Code
package test;
public interface JBase {
String method();
}
// Scala Code
package test
trait Trait extends JBase {
def method:String = method()("10")
def method()(implicit i:String):String = { "2" }
}
object Object extends Trait {
}
我碰到一個錯誤「曖昧參照重載定義類型(性狀性狀,既方法方法)(隱式I:字符串)的類型()字符串匹配的性狀性狀字符串和方法方法參數類型()「
在這兩種情況下,編譯器的行爲有何不同?我該如何解決這個問題?
帶圓括號的方法不能覆蓋沒有 – 4lex1v
的方法另外,我會讓它成爲一個一般的經驗法則,如果你在Scala中重載,那麼你做錯了什麼.___ – Apocalisp
什麼是重載的替代方法?這裏的java接口不受我控制,即它是庫的一部分。我認爲使用隱式是一種很酷的方式來維護api調用的庫簽名,同時增加額外的功能。 – 0n4li