728x90
만약 병렬처리를 위해 매번 새로운 인스턴스를 생성해야 하고 생성해야 할 인스턴스에 메소드가 하나라면 함수형 인터페이스를 고려해볼 수 있다. 코틀린에서는 이를 SAM 인터페이스 라고도 부른다.
물론 고전적인 방식으로 함수 하나만 가지고 있는 클래스를 선언해서 인스턴스를 생성해서 사용해도 되지만 함수형 인터페이스를 사용할 경우 익명클래스를 정의할 필요없이 람다식으로 대체할 수 있어서 좀 더 깔끔하고 직관적으로 코드를 완성할 수 있다.
코틀린에서 함수형 인터페이스는 아래와 같이 사용한다. 만든다. interface 지시어 앞에 fun 만 붙여주면 된다.
함수형 인터페이스 선언
interface 지시어 앞에 fun 만 붙여주면 된다.
fun interface TestFunc {
fun test(param1: String, param2: String): Boolean
}
함수형 인터페이스 호출
TestFunc {
param1, param2 ->
println(param1)
println(param2)
true
}.test("param1 str", "param1 str")
만약 함수가 2개 이상이라면 함수형 인터페이스로 만들 수 없고 일반적으로 익명클래스를 만드는 방식으로 아래와 같이 사용해야 한다.
인터페이스 선언
interface TestFunc {
fun test1(param1: String, param2: String): Boolean
fun test2(param1: String, param2: String): Boolean
}
인터페이스 호출
object: TestFunc {
override fun test1(param1: String, param2: String): Boolean {
println(param1)
println(param2)
return true
}
override fun test2(param1: String, param2: String): Boolean {
println(param1)
println(param2)
return true
}
}.test1("param1 str", "param1 str")
728x90
'Backend > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린에서 @QueryProjection 사용하기 (0) | 2022.02.03 |
---|---|
[Kotlin] JPA Entity. data class? class? (0) | 2022.02.03 |
[Kotlin] 확장함수 언제 어떻게 사용해야 할까? (0) | 2021.12.24 |
코틀린 with, apply, also, let, run (0) | 2021.12.23 |
[Kotlin] interface default method (0) | 2021.12.22 |