【问题标题】:SharedPreferences : Is it a class or an interface?SharedPreferences:它是一个类还是一个接口?
【发布时间】:2026-02-04 09:45:01
【问题描述】:

我很困惑,请帮助我。

Android developers documentationSharedPreferences 是一个Interface,我们也可以在grepCode 上看到 SharedPreferences 是一个Interface

但是developers.android 也说SharedPreferences 是一个类。

他们写作。

“SharedPreferences 提供了一个通用框架......”

那么,SharedPreferencesClass 还是 Interface

【问题讨论】:

标签: android sharedpreferences


【解决方案1】:

文档没有错,但可能有点混乱。

如果您查看代码,您会发现SharedPreferences 实际上是一个接口。但正如你提到的,here 它将其实现称为类,实际上是SharedPreferencesImpl,您可以查看它的实现here。当你调用getSharedPreferences()方法时,它实际上返回了SharedPreferencesImpl的对象,这是一个实现SharedPreferences接口的类。

【讨论】:

    【解决方案2】:

    嗯,SharedPrefs 是一个接口。它由SharedPreferencesImpl 实现,它为我们提供了文档中提到的共享首选项的功能。尽管 SharedPreferencesImpl 主要不在文档中,但 SharedPreferences 一直是该功能的代表。

    【讨论】:

      【解决方案3】:

      SharedPreferences 是接口,但作为类实现。这个概念是抽象工厂,一种设计模式。 SharedPreferences的声明是interface,但是getSharedPreference()返回的是一个实现SharedPreferences接口的类。

      【讨论】:

        【解决方案4】:

        Sharedpreferences 是一个接口。您可以看到 here Sharedpreferences 将 Interface 作为其父级。

        用于访问和修改 getSharedPreferences(String, int) 返回的首选项数据的接口。对于任何特定的首选项集,所有客户端都共享一个此类的单个实例。

        更多参考可以看this的回答。

        【讨论】:

        • 他已经有了这个链接,他只需要了解它是什么。一个链接说它是一个接口,另一个说它是一个
        • 第二个链接显示“SharedPreferences 类提供了一个通用框架,允许您保存和检索原始数据类型的持久键值对。”这似乎是一个错误。
        最近更新 更多