2016-06-07 3 views

답변

22

단 하나의 방법은 당신이을 활용할 수있다 인터페이스를 가정하면 아마도 코 틀린의 람다입니다

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

'acceptHandler {println ("Hello : $ it")}'대부분의 경우에도 작동합니다 – voddan

2

간단한 답 : 나는 간결이 같은 자바 익명 클래스와 비슷 코 틀린 그것을 구현할 수있는 방법

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

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

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