함수형 인터페이스 (Functional Interfaces)

h_hi·2021년 2월 26일
0

kotlin

목록 보기
6/10

Functional Interface(함수형 인터페이스)

오직 하나의 abstract method 를 가진 인터페이스를 functional interface 또는 Single Abstract Method(SAM) interface 라고 부릅니다.

kotlin 에선 함수형 인터페이스를 선언하기 위해 fun 제어자를 사용합니다.

fun interface KRunnable {
   fun invoke()
}

SAM 변환

SAM 변환은 람다 표현식 을 사용함으로써 코드를 더 간결하게 나타낼 수 있습니다.
예를 들어, 아래와 같은 함수형 인터페이스가 있습니다.

fun interface IntPredicate {
    fun accept(i: Int): Boolean
}

SAM 변환을 사용하지 않는다면 아래와 같습니다.

val isEven = object: IntPredicate {
        override fun accept(i: Int): Boolean {
            return i % 2 == 0
        }
    }

위와 같은 코드를 SAM 변환으로 바꾼다면 아래와 같이 훨씬 간결한 코드를 사용할 수 있습니다.

    val isEven = IntPredicate { it % 2 == 0 }

functional interface VS type alias

  • 함수형 인터페이스와 type alias 의 목적은 다릅니다. 함수형 인터페이스가 새로운 type 을 만든다면 type alias 는 기존에 존재하는 타입에 이름을 붙이는 것입니다.
  • 함수형 인터페이스는 1개의 abstract method 와 여러개의 non-abstract method 들을 가질수 있는 반면, type alias 는 하나의 method 만 가질 수 있습니다.
    따라서, 함수형 인터페이스가 type alias 보다 더 유연하다고 볼 수 있습니다.

Reference

코틀린 공식문서

profile
안드로이드, flutter 개발자

0개의 댓글