-
Kotlin SMA (single abstract method) ConversionsKotlin 2020. 7. 22. 11:37반응형
kotlin 1.4 부터 java -> kotlin 만 변환이 가능했던 SMA Conversions 이
Kotlin -> Kotlin 으로도 지원하도록 업데이트 되었습니다.
해당 기능은 Java8에도 있는 기능으로 Interfase에 있는 method가 하나일 경우
Lambda 식으로 변경해주는 기능입니다.
해당 기능을 사용 하면 코드를 간결하게 쓸수 있는 장점이 있습니다.
주로 예시로 드는것이 setOnClickListener 입니다.
아래의 코드가 setOnClickListener 를 일반적으로 작성했을때 입니다.
button.setOnClickListener(object: View.OnClickListener { override fun onClick(v: View?){ //클릭시 처리 } })
위의 코드를 SMA Conversions 하면 아래와 같이 표시가 됩니다.
메개변수인 메소드를 구분하기 위해서 ()로 밖으로 뺄수 있습니다.
button.setOnClickListener({ v: View? -> //클릭시 처리 })
매개변수가 메소드 1개이면 () 를 빼고 더 줄일수 있습니다.
button.setOnClickListener(){v:View?-> //클릭시 처리 }
추론 가능한 타입이라면 메소드의 매개변수의 타입도 생략할 수 있습니다.
button.setOnClickListener{v:View?-> //클릭시 처리 }
만약 메소드의 매개변수도 사용하지 않는다면 _ 로 표기 할수 있습니다.
button.setOnClickListener{v-> //클릭시 처리 }
메소드의 매개변수도 모두 사용 하지 않는다면 _ 도 생략 할수 있습니다.
또는 매개변수가 1 개라면 it 으로 사용 할수도 있습니다.
button.setOnClickListener{_-> //클릭시 처리 }
최종적으로 모든것을 생략하면 아래와 같이 간단한 구조로 표기가 가능합니다.
button.setOnClickListener{ //클릭시 처리 }
https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
Calling Java from Kotlin - Kotlin Programming Language
kotlinlang.org
https://thdev.tech/kotlin/androiddev/2017/10/07/Kotlin-SAM/
Kotlin SAM(Single Abstract Method)을 사용하는 방법 |
I’m an Android Developer.
thdev.tech
https://dunkey2615.tistory.com/33
[Kotlin] SAM - single abstract method
자바로 작성된 메서드가 하나인 인터페이스를 구현할 때는 대신 함수를 작성하는 것을 말합니다. 자바에서 작성한 인터페이스일 때만 동작합니다. button.setOnClickListener(object : View.OnClickListener{ �
dunkey2615.tistory.com
https://snowdeer.github.io/android/2019/09/02/android-kotlin-single-abstract-method/
SAM(Single Abstract Method) · snowdeer's Code Holic
SAM(Single Abstract Method) 02 Sep 2019 | Android Kotlin SAM 변환 코틀린은 자바에서 작성한 인터페이스에 대해 SAM(Single Abstract Method) 변환을 지원합니다. 그래서 인터페이스를 매개변수로 받는 함수에 대해서
snowdeer.github.io
https://beomseok95.tistory.com/92
Kotlin - 람다식, SAM변환
Kotlin - 람다식, SAM변환 람다식 코틀린은 자바 8과 같이 람다식을 지원합니다. 람다식은 하나의 함수를 표현하는 방법으로 익명 클래스나 익명 함수를 간결하게 표현할 수 있어서 매우 유용합니��
beomseok95.tistory.com
반응형'Kotlin' 카테고리의 다른 글
Kotlin Delegate Pattern (0) 2023.06.03 first-class, High-order function and inline funtion (0) 2023.05.02 kotlinOptions useIR 의 의미는? (0) 2021.12.17 Kotlin Spread Operator (코틀린 스프레드 연산자) (0) 2020.12.16 앱의 미래 : 선언적 UI 와 Kotlin MultiPlatform (Daniele Baroncelli) (0) 2020.12.15 Kotlin Cheat Sheet and Quick Reference (0) 2020.07.23 Introduction to Kotlin coroutines (0) 2019.10.10 lateinit / lazy 의 차이점 (0) 2019.10.04