Piszę chroniony trait
że należy określić metodę clone
przekazujących CloneResult
, a więc:Scala: Określanie metody publiczne nadpisują metody
trait TraitWithClone extends Cloneable {
def clone: CloneResult
}
Zamiarem jest, aby zaostrzyć typ zwracany z java.lang.Object
' s clone()
na coś przydatnego dla tego interfejsu. Jednak przy próbie kompilacji tego, otrzymuję:
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)
Jak mogę wymagać, aby implementacja być public
, kiedy Scala nie ma słowa kluczowego? Wiem, że mogę:
trait TraitWithClone extends Cloneable {
override def clone = cloneImpl
protected def cloneImpl: CloneResult
}
... ale to wygląda na włamanie. Jakieś sugestie?
Does 'override klon def(): CloneResult' działa? –
Nie; to była pierwsza rzecz, którą próbowałem. –
Z nawiasem? –