코틀린에서 단일 추상 메서드(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
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 코드를 자바에서 사용 (0) | 2024.01.07 |
---|---|
자바를 코틀린으로 변환하는 변환기 (0) | 2024.01.07 |
코틀린/자바 타입 매핑 (0) | 2024.01.07 |
코틀린 널 가능성 애너테이션 (0) | 2024.01.06 |
코틀린 플랫폼 타입 (0) | 2024.01.06 |