SharedPreferences.Editor(安卓)混淆问题

3
坦白说,我不太确定如何为此设置标题。我正在学习http://developer.android.com/training/basics/data-storage/shared-preferences.html,希望能够使事情更加清晰易懂。
假设我们有:
SharedPreferences sharedPref = getSharedPreferences(USERNAME, MODE_PRIVATE);

并且

SharedPreferences.Editor editor = sharedPref.edit();

当我在Eclipse IDE中将鼠标悬停在edit()上时,我发现:
打开声明Editor android.content.SharedPreferences.edit() public abstract SharedPreferences.Editor edit () API级别1中添加 创建一个新的编辑器以修改首选项中的数据,并将这些更改原子地提交回SharedPreferences对象。 请注意,您必须调用commit()才能使您在编辑器中执行的任何更改实际显示在SharedPreferences中。 返回 返回SharedPreferences.Editor接口的新实例,允许您修改此SharedPreferences对象中的值。
所以我有三个小问题:
1/edit()是一个抽象方法,那么在哪个类中已经覆盖了edit()(我已经学会了“public abstract SharedPreferences.Editor edit()”位于SharedPreferences接口中,因此一定有一些类实现了该接口)。
2/SharedPreferences.Editor是一个接口。据我所知,接口无法实例化。那么为什么上面的editor对象可以接收“SharedPreferences.Editor接口的新实例”,如API中所述。
3/我刚开始学习Android几天了,这种方式学习是否可行,也就是分解一切使它们对我清晰明了?
谢谢
1个回答

1
你需要明白的主要事情是,你不应该关心实现抽象类(或接口)的人和方式。在 SharedPreferences 的情况下,它由 Android 内部类实现(这意味着它对你不可用)SharedPreferencesImpl
换句话说,你不应该关心细节。接口只描述了这个对象能做什么(你应该相信它)。
附注:只要你在学习,这是一个好的方法。

我想我也找到了我的第二个问题的答案。应该是这样的:https://dev59.com/nWox5IYBdhLWcg3whUgV 。谢谢你的回答。 - philomath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接