2015-04-27 8 views
12

पर स्टेटिक एक्सटेंशन फ़ंक्शन एक साथी ऑब्जेक्ट में एक्सटेंशन फ़ंक्शन जोड़ने के समान एक स्थिर एक्सटेंशन फ़ंक्शन जोड़ना संभव है। मैंनेजावा क्लास

public fun ByteBuffer.Companion.invoke(capacity: Int): ByteBuffer 

लेकिन यह अनसुलझा संदर्भित किया गया: सहयोगी। मैं केवल यह मानता हूं क्योंकि जावा कोड में कंपैनियन परिभाषित नहीं किया गया है।

+2

यह –

+1

पल में समर्थित नहीं है, जो कि कोटलिन-क्लास पर लागू होता है, जिसमें कंपैनियन-ऑब्जेक्ट नहीं होता है। – D3xter

उत्तर

7

आप सही हैं, जावा कक्षाओं में सहयोगी वस्तुएं नहीं हैं। आप या घोषित साथी वस्तुओं के लिए वर्गों के लिए एक्सटेंशन जोड़ सकते हैं (वर्ग के उदाहरण पर दिखाई देगा) (वर्ग पर एक स्थिर की तरह दिखाई देगा):

class A { companion object } 
class B { companion object Test } 

fun A.Companion.foo() { println("Test A.foo") } 
fun B.Test.foo() { println("Test B.foo") } 

fun main(args: Array<String>) { 
    A.foo() // prints «Test A.foo» 
    B.foo() // prints «Test B.foo» 
} 

उदाहरण में काम करता है Kotlin 0.15.126

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