2016-10-29 12 views
5

मैं एक वर्गसमस्याएं बराबरी को परिभाषित() ऑपरेटर

open class Texture 

है और मैं equals(other: Texture) ऑपरेटर

operator fun equals(other: Texture) = ...

का निर्धारण कैसे करेंगे, लेकिन मैं

Error:(129, 5) Kotlin: 'operator' modifier is inapplicable on this function: must override ''equals()'' in Any

मिल क्या क्या इसका मतलब यह कि?

अगर मैं बदल कि करने के लिए

operator fun equals(other: Any) = ...

Accidental override, two declarations have the same jvm signature

उत्तर

5

equals() operator function is defined in Any, तो यह एक संगत हस्ताक्षर के साथ ओवरराइड किया जाना चाहिए: अपने पैरामीटर other प्रकार Any? का होना चाहिए, और अपनी वापसी मान Boolean होना चाहिए या इसके उप प्रकार(यह अंतिम है):

open class Texture { 
    // ... 

    override operator fun equals(other: Any?): Boolean { ... } 
} 

the override modifier के बिना, आपके समारोह Any::equals के साथ संघर्ष करेगा, इसलिए आकस्मिक ओवरराइड। इसके अलावा, equals() एक विस्तार (just like toString()) नहीं किया जा सकता है, और यह एक अंतरफलक में ओवरराइड नहीं किया जा सकता।

IntelliJ विचार में, आप एक सदस्य, या Ctrl +सम्मिलित ओवरराइड करने के लिए Ctrl +हे का उपयोग उत्पन्न करने के लिए equals() + hashCode()

+0

सवाल का अद्यतन की वजह से इस सवाल का जवाब अपडेट किया जा सकता है। – hotkey

+0

आप कार्य के लिए कैसे की व्यवस्था है 'FALSE' वापस जाने के लिए जब' 'other' Texture' का एक उदाहरण नहीं है? – saulspatz

संबंधित मुद्दे