Kotlin匿名內(nèi)部類

在java中創(chuàng)建匿名內(nèi)部類,只需要把這個(gè)類直接new 出來,下面以一個(gè)interface給為例子,如下

public interface OnItemClickListener<T> {
void onItemClick(ViewHolder viewHolder, T data, int position);
}

mAdapter.setOnItemClickListener(new OnItemClickListener<String>() {
@Override
public void onItemClick(ViewHolder viewHolder, String data, int position){
}
});
在kotlin中用對(duì)象表達(dá)式替代java匿名內(nèi)部類的語法

1.object方式
mAdapter!!.setOnItemClickListener(object : OnItemClickListener<String>{
override fun onItemClick(viewHolder: ViewHolder?, data: String?, position: Int){
}
})
看起來用object方法創(chuàng)建匿名內(nèi)部類和java的方式差不多,下面用lambda再簡化下代碼

2.lambda
它的參數(shù)(如果有的話)在""->""前定義,參數(shù)類型可能是省略的。 函數(shù)體跟在""->""后面。lambda方式要求此接口只能有一個(gè)抽象方法需要實(shí)現(xiàn),如有有兩個(gè)要實(shí)現(xiàn)就要用object方式。

mAdapter!!.setOnItemClickListener { viewholder, data, position ->
}
3.單個(gè)參數(shù)情況
在只有一個(gè)參數(shù)的情況下,只需要一個(gè)括號(hào),用it替代參數(shù)

view.setOnClickListener {

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容