使 Android Lifecycle Observer 接收器在 Kotlin 中不可为空

Make Android Lifecycle Observer receiver non nullable in Kotlin

我有 Result 包装数据来自后端的包装器

data class Result<T>(val success: Boolean, val result: T?, val message: String?)

这个想法,检查 success 而不是结果为空或无效,并获取 UI 错误报告的格式化消息。但是当尝试将它与 android 生活方式组件一起使用时,特别是在 Observer 中,我必须检查 null。

如何避免这种空检查?发生这种情况是因为

void onChanged(@Nullable T t);

Observer 中。我试图扩展它,但它似乎需要更多自定义包装器 类。我们这里有避免空检查的解决方案吗?

参数被注解为@Nullable 是一个框架错误。已在 androix.lifecycle 2.0.0-beta01.

中修复

Updated answer from @Andrei Vinogradov's answer

在升级到 2.0.0-beta01 之前,您可以尝试此解决方案。使用 Kotlin 库中的标准函数 let :

it?.let{ result ->
    if(result.success){
    // Rest of your code ..
    }
}