2017-01-14 13 views
7

Chcę przekazać jako parametr interfejs tak:interfejs uchodzić za parametr w Kotlin

class Test { 
    fun main() { 
     test({}) 
     // how can I pass here? 
    } 

    fun test(handler: Handler) { 
     // do something 
    } 

    interface Handler { 
     fun onCompleted() 
    } 
} 

W Javie można użyć funkcji anonimowej jak test(new Handler() { .......... }), ale nie mogę tego zrobić w Kotlin. Czy ktoś wie, jak to zrobić?

Odpowiedz

14

W Kotlin można zrobić:

test(object: Handler { 
    override fun onComplete() { 

    } 
}) 

lub dokonać nieruchomości w ten sam sposób:

val handler = object: Handler { 
    override fun onComplete() { 

    } 
} 

A gdzieś w kodzie: testowego (obsługi)

+0

dzięki, i jest jest jakikolwiek sposób na użycie lambda? – maphongba008

+4

Możesz odcyfrować funkcję: 'test zabawy (handler:() -> Unit)' (lub inny niż Unit, jeśli chcesz coś zwrócić) –

+0

Dziękuję, działa – maphongba008