안드로이드 한줄코딩

[코틀린] Kotlin callback 함수 간단히 만들기 - java callback과 비교

모바일큐레이터 2023. 9. 10. 11:06

Java의 경우

Callback callback; //콜백 선언

public void setCallback(Callback callback) { //콜백 저장
    this.callback = callback;
}

public void forCallback() { //콜백 호출
    if(callback != null) callback.onClick(1);
}

public interface Callback {
    void onClick(int code);
}


setCallback(new Callback() { //콜백 받는 코드
    @Override
    public void onClick(int code) {
    }
});
forCallback() //호출

 

Kotlin 방법 1

var callback: Callback? = null //콜백 선언

fun setCallback(backFun: (Int) -> Unit) { //콜백을 함수로 선언
    this.callback = object : Callback {
        override fun onClick(ix: Int) {
            backFun(ix)
        }
    }
}

fun forCallback() { // 콜백 호출
    callback?.onClick(1)
}

interface Callback {
    fun onClick(ix: Int)
}

setCallback { i -> println() } //콜백 받는 코드
forCallback() //호출

 

Kotlin 방법2 - 선언과 동시에 호출하는 방법

fun forCallback(callClick: (Int) -> Unit) { //콜백을 함수로 선언, 콜백 호출
    callClick(1)
}

forCallback { i -> println() } //호출