2 回答

TA貢獻2051條經驗 獲得超10個贊
有可能的。每個interface只有一個非默認方法的是一個FunctionalInterface. 該注釋僅供編譯器確保interface剛剛獲得一個非默認方法,否則會出現編譯錯誤。
嘗試這個:
DialogInterface.OnClickListener closeOnOkClickListener = (dialog, which) -> {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
finish();
break;
}
};
檢查這個FunctionalInterface以獲得注釋的更大解釋。

TA貢獻1785條經驗 獲得超8個贊
解釋
只要接口只有一種(非默認)方法,就您的情況而言,這是可能的。
這是 lambda 變體:
DialogInterface.OnClickListener closeOnOkClickListener = (dialog, which) -> {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
finish();
break;
}
};
請注意,您可以稍微改進代碼,因為您只使用其中一個switch案例:
DialogInterface.OnClickListener closeOnOkClickListener = (dialog, which) -> {
if (which.equals(DialogInterface.BUTTON_POSITIVE)) {
finish();
}
};
筆記
理想情況下,接口應該有@FunctionalInterface注釋來記錄這種用法。
添加回答
舉報