【发布时间】:2016-06-19 16:12:53
【问题描述】:
我不确定为什么这不会编译 - 我正在尝试使用内部类(或 trait),以便其他对象可以使用生成的“RequestReturn”,但只有 Trait Request 及其后代可以构造首先是对象。我可能采取了错误的方法,但这段代码不应该在逻辑上起作用吗?我已将 RequestReturn 构造函数标记为 protected[Request] ,因此按理说 RequestContinue 类也可以调用构造函数。
trait Request {
class RequestReturn protected[Request](val x:Any)
def fulfill(item:Boolean):RequestReturn = new RequestReturn(item) //this line compiles
}
trait RequestContinue extends Request{
override def fulfill(item:Boolean):RequestReturn = new RequestReturn(item) //this won't compile
}
Error:(19, 54) 类 RequestReturn 中的构造函数 RequestReturn 无法在 trait RequestContinue 中访问 不允许访问受保护的构造函数 RequestReturn,因为 在包中包含特征 RequestContinue .... 不是 定义了目标的 trait Request 中的类 RequestReturn 覆盖 def 完成(项目:布尔值):RequestReturn = new RequestReturn(项目) ^
【问题讨论】:
标签: scala