为了提高对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 举报,一经查实,本站将立刻删除。