【发布时间】:2012-01-26 23:36:27
【问题描述】:
我正在写一个trait,它应该指定方法clone返回一个CloneResult,如下所示:
trait TraitWithClone extends Cloneable {
def clone: CloneResult
}
这里的目的是将java.lang.Object 的clone() 的返回类型收紧到对该接口有用的东西。但是,当我尝试编译它时,我得到:
错误:在 ()CloneResult 类型的特征 View2 中覆盖方法克隆; ()java.lang.Object 类型的类 Object 中的方法 clone 具有较弱的访问权限;它应该是公开的; (请注意, ()CloneResult 类型的特征 View2 中的方法 clone 是抽象的, 因此被 ()java.lang.Object) 类 Object 中的具体方法 clone 覆盖
当 Scala 没有关键字时,我如何要求实现为 public?我知道我能做到:
trait TraitWithClone extends Cloneable {
override def clone = cloneImpl
protected def cloneImpl: CloneResult
}
...但这似乎是一个黑客行为。有什么建议吗?
【问题讨论】:
-
override def clone(): CloneResult工作吗? -
否;这是我尝试的第一件事。
-
回去试了一下,没有豆子。
标签: scala methods overriding clone protected