2016-06-16 11 views
3

私は混乱しています。助けてください。SharedPreferences:クラスまたはインターフェイスですか?

Android developers documentationSharedPreferencesインタフェースであり、また、我々はSharedPreferencesはインタフェースであることをgrepCodeで見ることができると言います。

しかし、developers.androidSharedPreferencesクラスです。

書いてあります。

ので、SharedPreferencesクラスまたはインタフェースある "SharedPreferences クラスは...一般的なフレームワークを提供しますか"?

+0

インターフェースはhttp://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/content/SharedPreferences.java#SharedPreferences – Ozgur

答えて

0

Sharedpreferencesはインターフェイスです。 hereは、Sharedpreferencesがのインターフェイスを親として持つことがわかります。

getSharedPreferences(String、int)から返される設定データにアクセスして変更するためのインターフェイスです。特定のプリファレンスセットに対して、すべてのクライアントが共有するこのクラスの単一のインスタンスが存在します。

詳細については、thisの回答を参照してください。

+0

彼は既に持っていますこのリンクは、それが何であるかを理解する必要があるだけです。一つのリンクは**インターフェース**であり、もう一つは**クラス**であると言います** –

+0

2番目のリンクは "SharedPreferencesクラスは、基本的なデータ型の永続的なキーと値のペアを保存して取得することができます。それは間違いのようです。 –

+0

ありがとう、Sagar Nayak! –

2

まあ、SharedPrefsはインターフェイスです。 SharedPreferencesImplによって実装されています。この機能は、共有プリファレンスに関するドキュメントの機能を私たちに提供します。 SharedPreferencesImplは主に文書には含まれていませんが、SharedPreferencesは常にその機能の面でありました。

3

ドキュメントは間違っていませんが、少し混乱するかもしれません。

コードを見ると、実際にはSharedPreferencesがインターフェイスであることがわかります。しかし、あなたが言及したように、here 実際には、実際にはSharedPreferencesImplで、その実装hereを見ることができるクラスの実装を指しています。 getSharedPreferences()メソッドを呼び出すと、実際にSharedPreferencesインターフェイスを実装するクラスであるSharedPreferencesImplのオブジェクトが返されます。

+0

ありがとう、Rehan! –

2

SharedPreferencesはインターフェイスですが、クラスとして実装されています。この概念は抽象的なファクトリーで、一種のデザインパターンです。 SharedPreferencesの宣言はインタフェースですが、getSharedPreference()はSharedPreferencesインタフェースを実装するクラスを返します。

関連する問題