文章目錄
- 一、Java 中函式引數是介面型別
- 二、函式引數是介面型別 可以 直接傳遞閉包
- 三、完整代碼示例
一、Java 中函式引數是介面型別
在 Android 中經常使用如下形式的介面 :
定義一個 OnClickListener 介面 ,
interface OnClickListener {
void onClick()
}
將 OnClickListener 介面物件 作為函式引數 , 傳遞到函式中 ,
void setOnClickListener (OnClickListener onClickListener) {
onClickListener.onClick()
}
然后呼叫上述函式 , 傳遞一個 OnClickListener 的匿名內部類 ,
setOnClickListener(new OnClickListener() {
@Override
void onClick() {
println "OnClick"
}
})
執行結果為 :
OnClick
二、函式引數是介面型別 可以 直接傳遞閉包
如果 setOnClickListener 函式引數接收的是 1 1 1 個介面 , 介面中只有 1 1 1 個方法 , 那么可以直接向 setOnClickListener 方法中傳遞一個閉包 , 該閉包相當于 OnClickListener 介面中的 onClick 方法 ;
interface OnClickListener {
void onClick()
}
void setOnClickListener (OnClickListener onClickListener) {
onClickListener.onClick()
}
setOnClickListener{
println "OnClick2"
}
執行結果 :
OnClick2
三、完整代碼示例
完整代碼示例 :
interface OnClickListener {
void onClick()
}
void setOnClickListener (OnClickListener onClickListener) {
onClickListener.onClick()
}
// 正常引數呼叫
setOnClickListener(new OnClickListener() {
@Override
void onClick() {
println "OnClick"
}
})
// 傳遞一個閉包到 setOnClickListener 方法中
setOnClickListener{
println "OnClick2"
}
執行結果 :
OnClick
OnClick2

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/402778.html
標籤:其他
