我正在阅读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
我的问题是,我们在app / activities中调用了这样的共享首选项。
SharedPreferences prefs;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
我们永远不会将它扩展为强制使用抽象方法。它是如何工作的?
答案 0 :(得分:1)
您已使用PreferenceManager初始化您的SharedPreferences,因此它是在您实例化共享首选项之前实现这些方法的子类
答案 1 :(得分:1)
如果仔细查看文档,可以看到SharedPreference是public interface
。这不是一个阶级。 Android不希望您看到实现此接口的基础类,这就是为什么他们有getSharedPreferences()
和getDefaultSharedPreferences()
等工厂方法为您提供的方法。
编辑:值得注意的是Context.getSharedPreferences()
是一个抽象方法,然后在Activity.getSharedPreferences()
等子类中实现。