연산 또는 액션을 전달할 때는 인터페이스 대신 함수 타입을 사용하라
대부분의 프로그래밍 언어에 함수 타입이라는 개념이 없어, 연산 또는 액션을 전달할 때 메서드가 하나만 있는 인터페이스(SAM)를 활용한다.
interface OnClick {
fun click()
}
fun setOnClickListener (listener:OnClick) {
//..
}
fun main() {
setOnClickListener(object :OnClick{
override fun click() {
//구현
}
})
}
이런 코드를 함수 타입을 사용하는 코드로 사용한다면 다양한 방법으로 파라미터를 전달할 수 있다.
//함수 타입으로 전달
fun setOnClickListener(listener: (View)->Unit) {
//..
}
코틀린이 아닌 언어(ex. 자바)에서는 SAM을 사용하자