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注释来记录这种用法。
添加回答
举报