close

http://developer.android.com/reference/android/content/SharedPreferences.html
進Android的官方網站尋找SharedPreferences的API,
如果仔細看的話不難發現SharedPreferences是interface(介面)而不是class(類別)。

但如果學過java的人都知道interface(介面)是不能有方法內容的,
可是看到文件卻寫getInt(String key, int defValue)方法,可以得到回傳的int值,不會覺得奇怪嗎?
(還有許多其他的方法)

所以我猜測能實作getInt(String key, int defValue)的方法想必是SharedPreferences的子類別吧。
據說是android.app.SharedPreferencesImpl的類別實作SharedPreferences介面的方法,
但為什麼寫程式輸入android.app.SharedPreferencesImpl,編譯器卻總是說找不到此類別?

==========================================================================================

先說使用介面這檔子事

例如,會很常看到下面這樣的code

List<String> list = new ArrayList<>();

List是介面,ArrayList是實作的子類別
雖然下面這樣也是可以

ArrayList<String> list = new ArrayList<>();

但是一般建議使用第1種方式
至於為什麼請看下面的解說

http://stackoverflow.com/questions/2279030/type-list-vs-type-arraylist-in-java

至於為什麼不能使用SharedPreferencesImpl
簡單的說,在類別索引裡面找不到
就代表google不要我們用他
你可以多看其他java lib的code
有很多*Impl的類別,都不是寫來讓人用的

arrow
arrow
    文章標籤
    android SharedPreferences
    全站熱搜

    kahuran 發表在 痞客邦 留言(0) 人氣()