मैं लिख रहा हूँ अधिभावी एक trait
कि, विधि clone
एक CloneResult
लौटने निर्दिष्ट करना चाहिए ताकि:स्काला: निर्दिष्ट सार्वजनिक विधि संरक्षित विधि
trait TraitWithClone extends Cloneable {
def clone: CloneResult
}
यहाँ इरादा java.lang.Object
की वापसी प्रकार अप मजबूत करने के लिए है ' इस इंटरफेस के लिए उपयोगी कुछ 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
हो कि, जब स्काला कीवर्ड नहीं है? मुझे पता है कि मैं कर सकता हूं:
trait TraitWithClone extends Cloneable {
override def clone = cloneImpl
protected def cloneImpl: CloneResult
}
... लेकिन यह एक हैक जैसा लगता है। कोई सुझाव?
करता है 'ओवरराइड डीईएफ़ क्लोन(): CloneResult' काम करते हैं? –
नहीं; यह पहली बात थी जिसकी मैंने कोशिश की थी। –
कोष्ठक के साथ? –