onClickListener을 만드려고 할 때, 저 둘중 하나에서 우리는 {}로만 감싸진 더 간단한 식을 보통 구현한다.
사실 어떤 것을 사용하더라도 상관은 없다, 둘은 같은 메서드이기 때문이다.
binding.mainAutoCompleteTv.setOnClickListener(object : OnClickListener{
override fun onClick(v: View?) {
TODO("Not yet implemented")
}
})
==
binding.mainAutoCompleteTv.setOnClickListener { }
setOnclickListener의 원형은 2번째가 아닌 1번째와 같다.
OnClickListener의 onClick메서드를 우리가 오버라이딩 해주는 것이다.
위 식이 2번째로 바뀔 수 있는 이유는,
setOnClickListener가 하나의 onClickListener(object를 통해 anonymous nested class 로 선언) 매개변수를 가지므로 람다식으로 표현할 때 제거할 수 있고,
그 람다식에서 마지막 실행문이 원래 함수의 마지막 함수의 오버라이딩 문과 같기 때문이다.