Advertisement
Guest User

Untitled

a guest
Oct 26th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.78 KB | None | 0 0
  1.  
  2. fun main(args: Array<String>) {
  3.  
  4.     assert(Prefs.lastLogin == "")
  5.     assert(Prefs.updateDate == 0L)
  6.  
  7.     Prefs.lastLogin = "some login"
  8.     Prefs.updateDate = 12345L
  9.  
  10.     assert(Prefs.lastLogin == "some login")
  11.     assert(Prefs.updateDate == 12345L)
  12. }
  13.  
  14. val preferenceImitator = mutableMapOf<String, Any>()
  15.  
  16. class Prefs {
  17.     private class PrefSaver<T>(var key: String, var defValue: T) {
  18.  
  19.         @Suppress("UNCHECKED_CAST")
  20.         var value: T
  21.             get() {
  22.                 val temp =  when (defValue) {
  23.                     is Boolean -> preferenceImitator[key] as? T ?: defValue
  24.                     is Long -> preferenceImitator[key] as T ?: defValue
  25.                     is String -> preferenceImitator[key] as T ?: defValue
  26.                     is Int -> preferenceImitator[key] as T ?: defValue
  27.                     is Float -> preferenceImitator[key] as T ?: defValue
  28.                     is MutableSet<*> -> preferenceImitator[key] as T ?: defValue
  29.                     else -> throw ClassNotFoundException()
  30.                 }
  31.                 println("Get value '$temp' with key '$key'")
  32.                 return temp
  33.             }
  34.             set(value) {
  35.                 println("Set value '$value' with key '$key'")
  36.                 preferenceImitator[key] = when (defValue) {
  37.                     is Boolean -> value
  38.                     is Long -> value
  39.                     is String -> value
  40.                     is Int -> value
  41.                     is Float -> value
  42.                     is MutableSet<*> -> value
  43.                     else -> throw ClassNotFoundException()
  44.                 } as Any
  45.             }
  46.     }
  47.  
  48.     companion object {
  49.         var updateDate = PrefSaver("update_date", 0L).value
  50.         var lastLogin = PrefSaver("login", "").value
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement