[Kotlin] SAM(Single Abstract Method)

Twaun·2022년 6월 30일
0

Kotlin

목록 보기
5/6

SAM(Single Abstract Method)이란?

단 하나의 추상화 함수를 가지고 있는 함수형 인터페이스를 뜻한다.
다음과 같은 형태이다.

fun interface KRunnable {
   abstract(생략가능) fun invoke()
}

비교 사용

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

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

일반적으로 interface의 함수를 사용하려면 객체 생성후 오버라이딩하여 해당 함수를 구현해야 한다.

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

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

위와 같이 SAM을 사용하게 된다면 간단한 람다식으로 표현이 가능해진다. 이 얼마나 심플하고 아름다운가!!

단, 인터페이스 내부에 함수가 하나만 존재할 때 사용이 가능하다는 점!!

출처 : https://kotlinlang.org/docs/fun-interfaces.html

profile
Android Developer

0개의 댓글