1

我正在阅读android的文档

http://developer.android.com/reference/android/content/SharedPreferences.html

几乎所有的公共方法都被声明为抽象的:例如;

public abstract boolean getBoolean (String key, boolean defValue)
public abstract Map<String, ?> getAll ()
public abstract float getFloat (String key, float defValue

我的问题是,我们在我们的应用程序/活动中调用这样的共享偏好。

SharedPreferences prefs;
prefs = PreferenceManager.getDefaultSharedPreferences(this);

我们从不将其扩展为被迫使用抽象的方法。它是如何工作的 ?

4

2 回答 2

1

您已经使用 PreferenceManager 来初始化 SharedPreferences,因此它是一个子类,在您实例化 Shared Preferences 之前实现了这些方法

于 2013-10-24T17:11:18.147 回答
1

如果您仔细查看文档,您会发现 SharedPreference 是一个public interface. 它不是一门课。Android 不希望你看到实现这个接口的底层类,这就是为什么他们有工厂方法,比如getSharedPreferences()getDefaultSharedPreferences()给你一个。

编辑:还值得注意的是,这Context.getSharedPreferences()是一个抽象方法,然后在子类中实现,例如Activity.getSharedPreferences().

于 2013-10-24T17:36:24.257 回答