Sto scrivendo un protetto trait
che dovrebbe specificare il metodo di clone
restituendo un CloneResult
, come così:Scala: Specifica il metodo pubblico prevalente metodo
trait TraitWithClone extends Cloneable {
def clone: CloneResult
}
L'intento è quello di stringere il tipo di ritorno di java.lang.Object
' s clone()
a qualcosa di utile per questa interfaccia. Tuttavia, quando provo a compilare questo, ottengo:
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)
Come posso richiedere che un'implementazione sia public
, quando Scala non ha la parola chiave? So che posso fare:
trait TraitWithClone extends Cloneable {
override def clone = cloneImpl
protected def cloneImpl: CloneResult
}
... ma sembra un trucco. Eventuali suggerimenti?
Fa 'def clone di override(): CloneResult' lavorare? –
No; questa è stata la prima cosa che ho provato. –
Con la parentesi? –