问题
How to write this method in functional programming by using Java 8 lambda / stream() in a short more intuitive way?
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();
}
回答1:
Replace all anonymous classes with lambdas like
new DialogBuilder.Positive() {
@Override
public void handleClick(DialogInterface dialogInterface, View view) {
...
}
}
|
V
(dialogInterface, view) -> { /*do nothing*/ }
(dialogInterface, view) -> { mWebView.getComposeContent(); }
And I don't see how Stream API can be applied here.
来源:https://stackoverflow.com/questions/37438097/convert-method-to-java-8-lambda