Simple&Natural

코틀린 SAM 인터페이스의 람다식 관련 본문

언어/Java&Kotlin

코틀린 SAM 인터페이스의 람다식 관련

Essense 2020. 4. 8. 23:15
728x90

코틀린 코드 사이에서는 SAM 인터페이스 변환을 지원하지 않는다.

 

기존의 자바코드의 경우 

view.setOnClickListener {

     //TODO

}

와 같은 형태를 지원하는데

 

이는 OnClickListener와 setOnClickListener가 모두 Java로 구현이 되어있기에 가능하다.

OnClickListener만 Java로 구현되었고 setOnClickListener는 Kotlin으로 구현되어 있다면

view.setOnClickListener(OnClickListener {

     //TODO

})

와 같은 형태로 구현되어진다.

안에 있는 OnClickListener를 밖으로 빼낼 수 없다.

 

만약 두 코드가 모두 Kotlin으로 구현되어진 상태라면

익명객체인 object를 이용해야 한다.

 

 

 

 

함수형 패러다임에서 다루어지는 부분이니 궁금하다면 해당 부분을 공부해야 한다.

 

 

 

 

 

 

참고자료)

 

https://jinn-blog.tistory.com/23

 

코틀린(Kotlin) | SAM Conversion

발단 오브젝트가 함수형 인터페이스면 접두어로 인터페이스 파입을 가진 람다를 생성할 수 있다하여 따라해봄. @FunctionalInterface interface FunctionalInterface { fun apply() } fun main() { val f = Functi..

jinn-blog.tistory.com

 

https://stackoverflow.com/questions/43737785/kotlin-interface-does-not-have-constructors

 

Kotlin: Interface ... does not have constructors

I am converting some of my Java code to Kotlin and I do not quite understand how to instantiate interfaces that are defined in Kotlin code. As an example, I have an interface (defined in Java code):

stackoverflow.com

 

728x90

'언어 > Java&Kotlin' 카테고리의 다른 글

Coroutine - withContext 와 coroutineScope 의 비교  (0) 2020.08.29
자바 메모리 관리 - 스택&힙  (0) 2020.06.25
Kotlin의 null처리  (0) 2020.03.20
computeIfAbsent() vs putIfAbsent()  (0) 2020.03.20
코틀린의 캡슐화  (0) 2020.03.19