2015-12-26 40 views
29

में सामान्य विस्तारित कक्षा और कार्यान्वयन इंटरफ़ेस कहें कि मैं एक प्रकार परिवर्तनीय, टी चाहता हूं, जो एक निश्चित वर्ग को विस्तारित करता है और एक इंटरफ़ेस लागू करता है। कुछ ऐसा:कोटलिन

class Foo <T : Bar implements Baz> { ... } 

कोटलिन में इसके लिए वाक्यविन्यास क्या है?

उत्तर

57

कोण ब्रैकेट के अंदर केवल एक ऊपरी बाउंड निर्दिष्ट किया जा सकता है।

class Foo<T> where T : Bar, T : Baz { ... } 

और कार्यों के लिए:

fun <T> f(): Foo where T : Bar, T : Baz { ... } 

यह here प्रलेखित है जब वहाँ एक से अधिक बाधा

Kotlin सामान्य बाधाओं के लिए अलग अलग वाक्य रचना प्रदान करता है।

+0

क्या पैरामीटर प्रकार के मज़े के लिए इसका उपयोग करने का कोई तरीका है, उदाहरण के लिए, मजेदार foo (arg: classType, InterfaceType) {}? कक्षा – Ufkoku

+0

@Ufkoku में टाइप पैरामीटर जोड़ने के बिना, नहीं, ऐसा करने का कोई तरीका नहीं है: कोटलिन में कोई अंतरंग प्रकार नहीं है, और जेनेरिक पैरामीटर को स्पष्ट रूप से घोषित किया जा सकता है। – hotkey