java - 将方法转换为 java 8 lambda

标签 java lambda functional-programming java-8 java-stream

如何使用 Java 8 lambda/stream() 以更简短、更直观的方式在函数式编程中编写此方法?

int animation = R.style.DialogAnimationSlideHorizontal;
String body;
String subject = mSubjectView.getText().toString();
BaseDialog dialog = dialogFactory.getType(DialogTypes.DIALOG_FULL);

if (!checkFields()) {
    // one of the recipients is invalid.
    body = getString(R.string.bad_address);
    dialog.showDialog(body, animation, new DialogBuilder.Positive() {
        @Override
        public void handleClick(DialogInterface dialogInterface, View view) {
            // do nothing
        }
    });
} else if (Helpers.isEmpty(subject)) {
        // Yup, empty... send the message without a subject?
        body = getString(R.string.empty_subject_compose);
        dialog.showDialog(body, animation, new DialogBuilder.Positive() {
            @Override
            public void handleClick(DialogInterface dialogInterface, View view) {
                // user accepted to send anyway.
                mWebView.getComposeContent();
            }
        });
} else {
    // everything is correct! send the message.
    mWebView.getComposeContent();
}

最佳答案

用 lambda 替换所有匿名类,例如

new DialogBuilder.Positive() {
    @Override
    public void handleClick(DialogInterface dialogInterface, View view) {
       ...
    }
}

               |
               V

(dialogInterface, view) -> { /*do nothing*/ }
(dialogInterface, view) -> { mWebView.getComposeContent(); }

而且我不知道如何在这里应用 Stream API。

关于java - 将方法转换为 java 8 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37438097/

相关文章:

java - Kotlin + Dagger 和注入(inject)构造函数?我对此迷失了

c# - 为什么 IQueryable 后面跟着 Any 会导致选择没有Where 子句?

c++ - 我可以在 lambda 中使用 constexpr 值而不捕获它吗?

scala - 在scala中根据条件创建两个列表

c++ - 有没有一种干净的方法来使用范围分割逗号和空格分隔的单词?

java - 什么可以使此 dsl 更易于键入或阅读?

java - 整数总是可以解析为长整数吗?

java - 评论线程 : insert gives 403 Forbidden

c# - 如何在 LINQ Where() 中使用额外的 int 参数

Scala 编写 lisp-like progn 的方法?