Kotlin/포스팅

코틀린 단일 추상 메서드 인터페이스

짜집퍼박사(짜박) 2024. 1. 7. 00:42

코틀린에서 단일 추상 메서드(SAM, Single Abstract Method) 인터페이스는 자바의 함수형 인터페이스와 유사한 개념입니다. 이러한 인터페이스는 하나의 추상 메서드만을 가지며, 그 외의 다른 메서드나 멤버가 없는 특별한 종류의 인터페이스입니다. 이러한 인터페이스는 람다 식을 사용하여 간단하게 인스턴스화할 수 있어 함수형 프로그래밍 스타일을 코틀린에서 지원합니다.

 

단일 추상 메서드 인터페이스 예제

// 단일 추상 메서드를 가진 인터페이스
interface Calculator {
    fun add(a: Int, b: Int): Int
}

fun main() {
    // 람다를 사용하여 인터페이스의 구현체 생성
    val addition: Calculator = { a, b -> a + b }

    // 람다를 통한 메서드 호출
    val result = addition.add(5, 10)
    println(result) // 출력: 15
}

위의 예제에서 Calculator 인터페이스는 하나의 추상 메서드인 add를 가지고 있습니다. 그리고 람다 식을 사용하여 이 인터페이스의 구현체를 만들어 사용하고 있습니다.

 

SAM 변환

코틀린은 자동으로 SAM 변환을 지원하여 자바와 상호 운용성을 강화합니다. SAM 변환은 단일 추상 메서드를 가진 코틀린 인터페이스를 자바에서 함수형 인터페이스로 사용할 수 있도록 해줍니다.

// 코틀린에서 정의한 단일 추상 메서드 인터페이스
interface Printer {
    fun printMessage(message: String)
}

// 자바에서 사용하는 함수형 인터페이스
fun useJavaFunctionalInterface(printer: Printer) {
    printer.printMessage("Hello from Kotlin SAM!")
}

fun main() {
    // 람다를 사용하여 Printer 인터페이스의 구현체 생성
    val kotlinPrinter: Printer = { message -> println(message) }

    // 자바 함수에 전달
    useJavaFunctionalInterface(kotlinPrinter)
}

위의 예제에서는 Printer 인터페이스를 정의하고, 람다를 사용하여 해당 인터페이스의 구현체를 생성한 후, 이를 자바 함수에 전달하고 있습니다. 이렇게 SAM 변환을 통해 코틀린의 함수형 프로그래밍 기능을 자바 코드에서도 활용할 수 있게 됩니다.

SAM 변환은 코틀린이 자바와의 상호 운용성을 보다 쉽게 만들어주는 중요한 기능 중 하나입니다.

 

With ChatGPT