@@ -9,7 +9,8 @@ import kotlin.reflect.KProperty
99/* *
1010 * 基于属性代理封装SharedPreferences
1111 */
12- class Preference <T >(private val key : String , private val defaultValue : T ) : ReadWriteProperty<Any, T> {
12+ class Preference <T >(private val key : String , private val defaultValue : T ) :
13+ ReadWriteProperty <Any ?, T > {
1314
1415 companion object {
1516 private const val SHARE_PRE_NAME = " open_github"
@@ -26,21 +27,24 @@ class Preference<T>(private val key: String, private val defaultValue: T) : Read
2627 }
2728 }
2829
29- override fun getValue (thisRef : Any , property : KProperty <* >): T = findPreference(key, defaultValue)
30+ override fun getValue (thisRef : Any? , property : KProperty <* >): T =
31+ findPreference(key, defaultValue)
3032
31- override fun setValue (thisRef : Any , property : KProperty <* >, value : T ) = putPreference(key, value)
33+ override fun setValue (thisRef : Any? , property : KProperty <* >, value : T ) =
34+ putPreference(key, value)
3235
33- private fun findPreference (key : String , defaultValue : T ): T {
34- return when (defaultValue) {
35- is Int -> mPreferences. getInt(key, defaultValue)
36- is Long -> mPreferences. getLong(key, defaultValue)
37- is Boolean -> mPreferences. getBoolean(key, defaultValue)
38- is String -> mPreferences. getString(key, defaultValue)
39- is Float -> mPreferences. getFloat(key, defaultValue)
36+ private fun findPreference (key : String , defaultValue : T ): T = with (mPreferences) {
37+ when (defaultValue) {
38+ is Int -> getInt(key, defaultValue)
39+ is Long -> getLong(key, defaultValue)
40+ is Boolean -> getBoolean(key, defaultValue)
41+ is String -> getString(key, defaultValue)
42+ is Float -> getFloat(key, defaultValue)
4043 else -> throw IllegalArgumentException (" This type can't be saved into SharedPreferences" )
4144 } as T
4245 }
4346
47+
4448 private fun putPreference (key : String , value : T ) {
4549 with (mPreferences.edit()) {
4650 when (value) {
0 commit comments