我有以下代码:

DialogInterface.OnClickListener closeOnOkClickListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which){
                case DialogInterface.BUTTON_POSITIVE:
                    finish();
                    break;
            }
        }
    };


我正在尝试将其转换为lambda表达式,但我无法做到。

可能吗?

怎么样?

最佳答案

有可能的。每个仅有一个非默认方法的interface都是一个FunctionalInterface。注释仅用于编译器,以确保interface仅具有一个非默认方法,否则,您将获得编译器错误。

尝试这个:

DialogInterface.OnClickListener closeOnOkClickListener = (dialog, which) -> {
    switch (which){
        case DialogInterface.BUTTON_POSITIVE:
            finish();
            break;
    }
};


签出this以获得FunctionalInterface注释的更多解释。

10-08 02:12