# 02/코틀린

[Kotlin] SAM Class

장딴지연 2019. 7. 15. 15:32
반응형

SAM conversions


- Single Abstract Methods

- lambdas 식을 제공

- Java에서 정의해야 함

  - interface/abstract - Single Abstract Methods

  - setter 정의



// Interface는 아래와 같습니다.

public interface OnClickListener {

void onClick (View var1);

}


// setOnClickListener을 아래와 같이 구현되어 있습니다.

public void setOnClickListener(View.OnClickListener 1) {

throw new RuntimeException("Stub!");

}




SAM은 언제 동작할까?


- setter와 추상 클래스 모두가 java 파일로 정의되어야 한다.

- 둘 중 하나라도 kotlin 파일로 정의하면 SAM은 동작하지 않는다.


class JavaSAMSample {

public static void setSAM(SAMInterface sam) {

}


interface SAMInterface {

void onClick(int position);

}

}





kotlin에서 Abstract Methods 구현하기


- Anonymous classes


JavaSAMSample.setSAM ( object : JavaSAMSample.SAMInterface {

override fun onClick(position : Int) {

}

override fun onClickSAM() {

}

})


반응형