我想使用Lambda表达式代替addOnCompleteListener(new OnCompleteListener <authresult>(){

时间:2019-04-05 04:58:54

标签: java android lambda

在Java 8 SE中使用OnCompleteListerner时出现错误 新的匿名OnCompleteListener()可以替换为lambda less ...(Ctrl + F1) 检查信息:此检查报告所有可以用lambda表达式替换的匿名类 Java 1.7或更早版本的JVM不支持Lambda语法。

            mAuth.createUserWithEmailAndPassword(email1, pass ).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful())
                    {
                        currentuser=FirebaseAuth.getInstance().getCurrentUser();
                        String uid= currentuser.getUid();
                        secondaryDB=firebaseDatabase.getInstance().getReference().child("android_demo").child("users").child(uid);
                        HashMap<String, String> userMap= new HashMap<>();
                        userMap.put("name",name);
                        userMap.put("fcm",fcm);
                        userMap.put("email",email);
                        userMap.put("mobile",mobile);
                        userMap.put("userid",userid+"");
                        userMap.put("image_url", profileimageUrl);

                        Log.e("DB Called","DatabaseCalled");
                        secondaryDB.setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {

                                if (task.isSuccessful())
                                {
                                    Log.v("success","**************************");
                                }
                            }
                        });
                    }




                }
            });

2 个答案:

答案 0 :(得分:1)

这是lambda风格

.createUserWithEmailAndPassword(email, pass)
.addOnCompleteListener(task -> {
    if (!task.isSuccessful()) {
        //error message
    }else{
        //success message
    }
});

此外,您可以将光标置于灰色区域上,表示可以用lambda代替,然后按 ALT + Enter ,将出现提示,选择替换为lambda

答案 1 :(得分:0)

  

随着Lambda在Java 8中引入,请确保已安装Java 8及更高版本的JDK。   “ createUserWithEmailAndPassword”的Lambda表达式:

mAuth.createUserWithEmailAndPassword(emailId, password)
                    .addOnCompleteListener(OnCompleteListener { task ->
                        if (task.isSuccessful) {

                        }}