[Effective Kotlin] 아이템 38. 연산 또는 액션을 전달할 때는 인터페이스 대신 함수 타입을 사용하라

Jimin Lim·2023년 10월 8일
0

Effective Kotlin

목록 보기
38/39
post-thumbnail

아이템 38

연산 또는 액션을 전달할 때는 인터페이스 대신 함수 타입을 사용하라

SAM

대부분의 프로그래밍 언어에 함수 타입이라는 개념이 없어, 연산 또는 액션을 전달할 때 메서드가 하나만 있는 인터페이스(SAM)를 활용한다.

interface OnClick {
    fun click()
}

fun setOnClickListener (listener:OnClick) {
    //..
}

fun main() {
    setOnClickListener(object :OnClick{
        override fun click() {
            //구현
        }
    })
}

함수 타입의 이점

이런 코드를 함수 타입을 사용하는 코드로 사용한다면 다양한 방법으로 파라미터를 전달할 수 있다.

//함수 타입으로 전달
fun setOnClickListener(listener: (View)->Unit) {
	//..
}
  1. 람다 표현식 또는 익명 함수로 전달
  2. 함수 레퍼런스 또는 제한된 함수 레퍼런스로 전달
  3. 선언된 함수 타입을 구현한 객체로 전달
  4. typealias 로 함수 타입 이름 붙여서 전달

SAM을 사용하는 경우

코틀린이 아닌 언어(ex. 자바)에서는 SAM을 사용하자

profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글