不在 Kotlin 中创建 ContextWrapper 实例调用 'getSharedPreferences' 方法的原因是什么?

What is the reason 'getSharedPreferences' method called by not making instance of ContextWrapper in Kotlin?

我写了如下代码,

val preference by lazy {
    getSharedPreferences("PreExActivity", Context.MODE_PRIVATE)
}

并且想知道 'getSharedPredferences' 方法的根源..

所以我找到了API..

public class ContextWrapper extends Context {
    @Override
    public SharedPreferences getSharedPreferences(String name, int mode) {
        return mBase.getSharedPreferences(name, mode);
    }
}

使用我在第一段代码中写的 getSharedPreferences 方法是否正确?

我觉得..

ContextWrapper().getSharedPreferences("PreExActivity", Context.MODE_PRIVATE)

就是使用那个方法的方法。

怎么可能?

因此您正在从 AppCompatActivity 调用 getSharedPreferences 方法。 这是完全正确的。

AppCompatActivity扩展FragmentActivity,扩展ComponentActivity,扩展Activity,扩展ContextThemeWrapper,扩展ContextWrapper扩展 ContextContext 是一个 abstract class,它实际上定义了 getSharedPreferences 方法。

使用 Activity 调用 getSharedPreferences(String name, int mode) 方法实际上是调用 ContextWrappergetSharedPreferences(String name, int mode),因为 Activity 继承了它。