티스토리 뷰

다음 글은 전체 내용을 공유하지 않고, 새로운 블로그로 링크를 제공하는 글입니다.

이어보기 : http://thdev.tech/kotlin/androiddev/2017/10/07/Kotlin-SAM


Kotlin에는 SAM Conversions이 제공됩니다. Single Abstract Methods의 약자로 SAM이라고 합니다.

이름에서 알 수 있듯 SAM은 하나의 추상 메서드에 대해서 lambdas 식을 제공합니다. 단, Java에서 작성한 Interface 정의와 이를 활용하는 setOnClickListener를 kotlin에서 부르는 경우에만 이에 해당합니다.

코틀린에서 유용해야 하는데 실제로는 kotlin에서 작성한 interface와 setOnClickListener 구현체가 있을 경우에는 SAM이 동작하지 않습니다.

이번 글에서는 Java에서 만들어진 interface 정의와 이를 활용하는 setOnClickListener을 java와 Kotlin에서 구현할 때 다른 점을 알아보고, Anonymous class와 Higher-Order Functions 정의를 이번 글에서 살펴보겠습니다.


OnClickListener 샘플 코드

이번 글에서는 Android SDK에 포함되어 있는 OnClickListener 인터페이스와 setOnClickListener의 내부 코드를 활용하기 위해서 원 코드를 옮겨보았습니다.

// Interface는 아래와 같습니다.
public interface OnClickListener {
    void onClick(View var1);
}

// setOnClickListener을 아래와 같이 구현되어 있습니다.
public void setOnClickListener(View.OnClickListener l) {
    throw new RuntimeException("Stub!");
}



다음 글은 전체 내용을 공유하지 않고, 새로운 블로그로 링크를 제공하는 글입니다.

이어보기 : http://thdev.tech/kotlin/androiddev/2017/10/07/Kotlin-SAM



댓글