微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – Kotlin自定义获取执行方法调用

为了提高对SharedPreferences.Editor的调用的可读性,我想使用一个Kotlin变量,每当我需要一个新的SharedPreferences.Editor时,它将执行’getSharedPreferences.edit()’.最初我打算使用这样的东西:
val editPreferences: SharedPreferences.Editor = Application.getSharedPreferences("preferences",Context.MODE_PRIVATE).edit()

但后来我被告知,’editPreferences’将保留对同一编辑器的引用,当我每次调用’editPreferences’时我真正希望它创建一个新的编辑器.

如果使用自定义getter,每次都会返回一个新的编辑器吗?像这样的东西:

val editPreferences: SharedPreferences.Editor 
    get() = Application.getSharedPreferences("preferences",Context.MODE_PRIVATE).edit()

仍在使用Kotlin并且不确定get()方法是否会引用编辑器而不是创建新的编辑器.

解决方法

第二个属性声明适合您的需要:它有一个 custom getter,因此获取属性值将始终执行getter,并且不存储该值(该属性没有 backing field).

你可能会被等号get()= …弄糊涂,但对于等效的getter形式它只是一个single-expression shorthand

val editPreferences: SharedPreferences.Editor 
    get() { 
         return Application
              .getSharedPreferences("preferences",Context.MODE_PRIVATE)
              .edit()
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐