为什么sharedPreferences.getString可能返回null?

Moh*_*sam 5 sharedpreferences kotlin

1)在下面的图片中,我想了解为什么sharedPreferences.getString()给我类型不匹配,它可能返回null,但sharedPreferences.getBoolean()sharedPreferences.getInt()不给我类型不匹配警告?

2)那么 defValue 呢,如果没有找到SharedPrefKey.App_LANGUAGE,它不是会返回en吗?所以它不能返回 null,对吧?

在此输入图像描述

Raf*_*afa 5

getString查看接口中的实现SharedPreferences

@Nullable
String getString(String key, @Nullable String defValue);
Run Code Online (Sandbox Code Playgroud)

该方法本身被标记为,@Nullable这意味着它可以返回 null。现在,如果您查看该defValue参数,您会发现它也被标记为@Nullable意味着您不必传递默认值。如果您正在寻找不存在且未传入默认值的字符串首选项,则将返回 null。

int getInt(String key, int defValue);
boolean getBoolean(String key, boolean defValue);
Run Code Online (Sandbox Code Playgroud)

getInt如果您查看上面的实现getBoolean,您会发现您必须传入默认值,因此它永远不会为空。这就是为什么您会看到可空性与您发布的示例之间的差异。