将一个函数从Java转换为Kotlin android

问题描述 投票:0回答:1

我已经用JAVA开发了一个应用程序。现在,我为与Firebase相关的调用做了一个功能。和完美的工作。但是现在我也想将该函数转换为kotlin。但是我对于如何在kotlin中使用该函数调用感到困惑。

Java的功能:

public static void firebaseAuth(FirebaseAuth auth, AuthCredential authCredential, Function<Object, Void> delegate) {
    auth.signInWithCredential(authCredential).addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            delegate.apply(auth.getCurrentUser());
        } else {
            delegate.apply(task.getException());
        }
    });
}

在Java中使用此功能:

FireSignInHelper.firebaseAuth(mFireAuth, authCredential, o -> {

            if (o instanceof Exception) {
                signIn_UnSuccessful((Exception) o);
            } else if (o instanceof FirebaseUser) {
                FirePacket firePacket = new FirePacket();
                firePacket.setProvider(provider);
                firePacket.setToken(((FirebaseUser) o).getUid());
                firePacket.setFirebaseUser((FirebaseUser) o);
                signIn_Successful(firePacket);
            }
            return null;
        });

Kotlin中的转换函数:

fun firebaseAuth(auth: FirebaseAuth,
    authCredential: AuthCredential?,
    delegate: Function<Any?, Void?>
) {
    auth.signInWithCredential(authCredential!!)
        .addOnCompleteListener { task: Task<AuthResult?> ->
            if (task.isSuccessful) {
                delegate.apply(auth.currentUser)
            } else {
                delegate.apply(task.exception)
            }
        }
}

在kotlin中使用转换函数:

我想知道这个答案。因为我已经尝试通过Android Studio,但是编译器无法正确转换。所以我想知道如何在kotlin中使用此功能。

预先感谢。

java android kotlin
1个回答
0
投票

我认为您只是想做这样的事情

fun firebaseAuth(
    auth: FirebaseAuth,
    authCredential: AuthCredential?,
    listener: (Any) -> Unit
) {
    auth.signInWithCredential(authCredential!!)
        .addOnCompleteListener {
            listener.invoke(if (it.isSuccessful) auth.currentUser else it.exception)                
        }
}

然后

FireSignInHelper.firebaseAuth(mFireAuth, authCredential) { 
     when(it){
        is FirebaseUser -> { ... }
        is Exception -> { ... }
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.