1

我正在尝试从 SDK 站点实现 Pusher ChatKit:https ://docs.pusher.com/chatkit 。我更喜欢将我的代码完全保留在 Java 中。

在示例中,有以下代码块:

chatManager.connect { result ->
  when (result) {
    is Result.Success -> {
      // We have connected!
      currentUser = result.value // CurrentUser
    }

    is Result.Failure -> {
      // Failure
      handleConnectionError(result.error)
    }
  }
}

但是,上面的代码是用 Kotlin 编写的。在我自己的代码中,mCurrentUser即使在chatManager.connect方法运行后也是 null 。

我升级了我的 Android Studio 以运行 Java 8,并尝试使用以下代码:

                chatManager.connect(result -> {
                    if (result instanceof Result.Success) {
                        mCurrentUser = ((Result.Success<CurrentUser, Error>) result).getValue();
                    }
                    if (result instanceof Result.Failure) {
                        System.out.print(result);
                    }
                    return Unit.INSTANCE;
                });

当我逐步使用调试器时,会跳过整个块。connect 方法记录一个成功的连接,但result总是null. 有人可以告诉我如何使用侦听器编写相同的回调吗?或者,向我展示我的 lambda 表达式的问题。

顺便说一句,chatManager.connect作为Function1<? super Result<CurrentUser, Error> Unit> callback参数。提前致谢。我已经坚持了2天。

4

0 回答 0