在以下示例中,我无法隐藏update
公开曝光:
trait Order {
sealed trait EntryOption {
private[Order] def update(e: EntryOption): Unit
}
private case object EmptyEntry extends EntryOption {
def update(e: EntryOption) = ()
}
trait Entry extends EntryOption
def test(a: Entry, b: EntryOption): Unit = a.update(b)
}
无法使用"error: object creation impossible, since method $line12$$read$Order$^date in trait EntryOption of type (e: Order.this.EntryOption)Unit is not defined
进行编译 - 无论应该是什么(编译器错误?)。我尝试了以下内容但没有成功:
update
EmptyEntry
private[Order]
protected
- 这会中断方法test
目标是让EntryOption
update
无法从外部Order
访问。
修改
如果我暂时将trait Order
更改为object Order
,它会编译,表明存在潜在的编译错误?
答案 0 :(得分:0)
愚蠢的解决方法:
trait Order {
sealed trait EntryOption {
private[Order] def update(e: EntryOption): Unit
}
private sealed trait ScalaChokes extends EntryOption {
private[Order] final def update(e: EntryOption) = ()
}
private case object EmptyEntry extends ScalaChokes
trait Entry extends EntryOption
}
我应该提交错误吗?