Я пишу trait
, который должен указать метод clone
возвращающей CloneResult
, как это:Scala: Определение публичного метода переопределения защищенного метод
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
}
... но это похоже на взлом. Какие-либо предложения?
делает определение функции клона переопределения(): CloneResult' работать? –
Нет; это было первое, что я пробовал. –
С круглой скобкой? –