我正在寫一個trait
應指定方法clone
返回CloneResult
,像這樣:斯卡拉:指定公共方法覆蓋保護的方法
trait TraitWithClone extends Cloneable {
def clone: CloneResult
}
這裏的目的是收緊的返回類型的java.lang.Object
「 s clone()
對此界面有用。然而,當我嘗試編譯,我得到:
error: overriding method clone in trait View2 of type()CloneResult; method clone in class Object of type()java.lang.Object has weaker access privileges; it should be public; (Note that method clone in trait View2 of type()CloneResult is abstract, and is therefore overridden by concrete method clone in class Object of type()java.lang.Object)
我怎麼能要求的實現是public
,當Scala沒有關鍵字?我知道我可以這樣做:
trait TraitWithClone extends Cloneable {
override def clone = cloneImpl
protected def cloneImpl: CloneResult
}
......但這似乎是一個黑客。有什麼建議麼?
是否'超越高清的clone():CloneResult'工作? – 2011-12-23 18:47:05
不;那是我嘗試的第一件事。 – 2011-12-23 23:34:55
用括號? – 2011-12-24 03:04:06