2017-01-14 24 views
7

Tôi muốn vượt qua một giao diện như tham số như thế này:đèo giao diện như tham số trong Kotlin

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

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

    interface Handler { 
     fun onCompleted() 
    } 
} 

Trong Java, tôi có thể sử dụng chức năng ẩn danh như test(new Handler() { .......... }), nhưng tôi không thể làm điều này trong Kotlin. Bất cứ ai biết làm thế nào để làm điều này?

Trả lời

14

Trong Kotlin bạn có thể làm:

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

    } 
}) 

Hoặc làm cho một tài sản theo cùng một cách:

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

    } 
} 

Và, đâu đó trong mã: thử nghiệm (handler)

+0

cảm ơn, và là có cách nào để sử dụng lambda? – maphongba008

+4

Bạn có thể thực hiện chức năng decalre như: 'test vui (handler:() -> Unit)' (hoặc không phải Unit, nếu bạn muốn trả lại cái gì đó) –

+0

Cảm ơn bạn, nó hoạt động – maphongba008

Các vấn đề liên quan