Simple&Natural
코틀린 SAM 인터페이스의 람다식 관련 본문
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
https://stackoverflow.com/questions/43737785/kotlin-interface-does-not-have-constructors
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 |