2016-06-07 10 views
13

मैं किसी तृतीय पक्ष जावा पुस्तकालय है जो इस तरह इंटरफेस के साथ एक वस्तु:कोटलिन में अज्ञात इंटरफ़ेस का उदाहरण कैसे बनाएं?

public interface Handler<C> { 
    void call(C context) throws Exception; 
} 

मैं कैसे संक्षेप में Kotlin में इसे लागू कर सकते हैं इस तरह जावा गुमनाम वर्ग के समान:

Handler<MyContext> handler = new Handler<MyContext> { 
    @Override 
    public void call(MyContext context) throws Exception { 
     System.out.println("Hello world"); 
    } 
} 

handler.call(myContext) // Prints "Hello world" 

उत्तर

22

इंटरफेस केवल एक ही विधि आपका उपयोग कर सकते है मान लिया जाये कि: शायद Kotlin के लैम्ब्डा है

val handler = Handler<String> { println("Hello: $it")} 

आप एक विधि है कि फिर एक हैंडलर स्वीकार करता है तुम भी प्रकार तर्क को छोड़ कर सकते हैं: इंटरफ़ेस से अधिक विधि है

fun acceptHandler(handler:Handler<String>){} 

acceptHandler(Handler { println("Hello: $it")}) 

acceptHandler({ println("Hello: $it")}) 

acceptHandler { println("Hello: $it")} 

तो वाक्य रचना में थोड़ा और अधिक वर्बोज़ है:

val handler = object: Handler2<String> { 
    override fun call(context: String?) { println("Call: $context") } 
    override fun run(context: String?) { println("Run: $context") } 
} 
+1

'स्वीकार करेंडलर {println (" हैलो: $ it ")} 'ज्यादातर मामलों में भी काम करेगा – voddan

2

सरल जवाब

val handler = Handler<MyContext> { 
    println("Hello world") 
} 

handler.call(myContext) // Prints "Hello world" 
संबंधित मुद्दे