Skip to content

Commit

Permalink
Make casting only on non-nullable
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcinMoskala committed Aug 27, 2018
1 parent fa74f93 commit 6d58191
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 11 deletions.
Expand Up @@ -51,6 +51,6 @@ internal class PreferenceFieldBinder<T : Any>(

private fun SharedPreferences.getValue(property: KProperty<*>): T {
val key = getKey(key, property)
return getFromPreference(clazz, type, default, key)
return getFromPreference(clazz, type, default, key) as T
}
}
Expand Up @@ -49,6 +49,6 @@ internal class PreferenceFieldBinderCaching<T : Any>(

private fun SharedPreferences.getValue(property: KProperty<*>): T {
val key = getKey(key, property)
return getFromPreference(clazz, type, default, key)
return getFromPreference(clazz, type, default, key) as T
}
}
Expand Up @@ -18,19 +18,19 @@ internal fun SharedPreferences.Editor.putValue(clazz: KClass<*>, value: Any, key
}
}

internal fun <T : Any> SharedPreferences.getFromPreference(clazz: KClass<T>, type: Type, default: T?, key: String): T = when (clazz.simpleName) {
"Long" -> getLong(key, default as Long) as T
"Int" -> getInt(key, default as Int) as T
"String" -> getString(key, default as? String) as T
"Boolean" -> getBoolean(key, default as Boolean) as T
"Float" -> getFloat(key, default as Float) as T
else -> getString(key, default.serialize()).deserialize<T>(type)
internal fun <T : Any> SharedPreferences.getFromPreference(clazz: KClass<T>, type: Type, default: T?, key: String): T? = when (clazz.simpleName) {
"Long" -> getLong(key, default as Long) as? T
"Int" -> getInt(key, default as Int) as? T
"String" -> getString(key, default as? String) as? T
"Boolean" -> getBoolean(key, default as Boolean) as? T
"Float" -> getFloat(key, default as Float) as? T
else -> getString(key, default.serialize()).deserialize(type)
}

internal fun <T: Any> SharedPreferences.getFromPreference(clazz: KClass<T>, type: Type, key: String): T?
= getFromPreference(clazz, type, getDefault<T>(clazz), key)
= getFromPreference(clazz, type, getDefault(clazz), key)

private fun <T: Any> String.deserialize(type: Type): T = getSerializer().deserialize(this, type) as T
private fun <T: Any> String.deserialize(type: Type): T? = getSerializer().deserialize(this, type) as? T

private fun <T> T.serialize() = getSerializer().serialize(this)

Expand Down

0 comments on commit 6d58191

Please sign in to comment.