虽然您可以做一些事情,但您有责任确保不会将null 传递给LiveData。除此之外,每个“解决方案”更多的是对警告的抑制,这可能很危险(如果您确实获得了 null 值,您可能无法处理它,Android Studio 也不会警告您)。
断言
您可以添加assert t != null;。断言不会在 Android 上执行,但 Android Studio 可以理解。
class PrintObserver implements Observer<Integer> {
@Override
public void onChanged(@Nullable Integer integer) {
assert integer != null;
Log.d("Example", integer.toString());
}
}
抑制警告
添加注释以抑制警告。
class PrintObserver implements Observer<Integer> {
@Override
@SuppressWarnings("ConstantConditions")
public void onChanged(@Nullable Integer integer) {
Log.d("Example", integer.toString());
}
}
删除注释
这也适用于我安装的 Android Studio,但它可能不适合您,但您可以尝试从实现中删除 @Nullable 注释:
class PrintObserver implements Observer<Integer> {
@Override
public void onChanged(Integer integer) {
Log.d("Example", integer.toString());
}
}
默认方法
您不太可能在 Android 上使用它,但纯粹从 Java 的角度来看,您可以定义一个新接口并在默认方法中添加一个 null 检查:
interface NonNullObserver<V> extends Observer<V> {
@Override
default void onChanged(@Nullable V v) {
Objects.requireNonNull(v);
onNonNullChanged(v);
// Alternatively, you could add an if check here.
}
void onNonNullChanged(@NonNull V value);
}