为什么Android架构组件中的Observer中的值可以为空?

hra*_*ach 8 android kotlin android-livedata android-architecture-components

来自体系结构组件的LiveData为接收器回调定义了一个具有可为空值的Observer:

public interface Observer<T> {
    /**
     * Called when the data is changed.
     * @param t  The new data
     */
    void onChanged(@Nullable T t);
}
Run Code Online (Sandbox Code Playgroud)

为什么有明确可以为空的注释?

该文件LiveData.observe()还说:

如果LiveData已经有数据集,它将被传递给观察者.

例如,Observer等待不可为空的更新或立即接收以前的非可空值,特别是在Kotlin中,直到我定义T为可为空.

代码似乎就是这样工作的.我理解为什么这不适用LiveData.getValue(),可以在第一个数据传递之前手动调用(因此检查mData != NOT_SET返回null).

所以第二个问题是:当T不可为空时,可以安全地假设Kotlin中的值是非空的吗?

Pra*_*ags 1

固定在 androix.lifecycle 2.0.0-beta01.

如果您遇到任何问题,请报告android 团队