以下代码给出了错误:
package test
trait Base {
def method:String
}
trait Trait extends Base {
def method()(implicit i:String):String = { "2" }
}
object Object extends Trait {
}
错误是“无法创建对象,因为未定义类型 => String 的类 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 {
}
现在,当我按如下方式定义 Java 接口时,而不是 Scala 类:
// 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 {
}
我收到一个错误“对重载定义的模糊引用,类型 () 的 trait Trait 中的方法方法(隐式 i: String)String 和类型 ()String 匹配参数类型 () 的 trait Trait 中的方法方法”
这两种情况有什么区别使编译器表现不同?我该如何解决这个问题?