我正在查看scala types of types self types annotation
它表示new Service
无法实例化,因为使用self type
支持extends
。但是我也用extends
尝试了这个例子,它仍然没有编译。
class TryMe {
class ServiceInModule {
def doTheThings() = "dfdf"
}
trait Module {
lazy val serviceInModule = new ServiceInModule
}
trait Service extends Module {
def doTheThings() = serviceInModule.doTheThings()
}
trait TestingModule extends Module {
}
new Service
}
错误:(22,3)特质服务是抽象的;无法实例化新的 服务^
我错过了什么吗?为什么声称扩展它应该编译?它没有编译......
答案 0 :(得分:3)
特征就像java中的增强界面,不能直接创建。你需要对它进行子类化,这是你通过添加{}。
所做的所以你需要做
new Service {}
并且您创建的不是Service的实例,而是创建扩展Service trait的“匿名类”