当前位置: 首页 > news >正文

潍坊市网站建设设计柳州网站建设公

潍坊市网站建设设计,柳州网站建设公,商业网点是什么意思,wordpress 复合筛选在 Kotlin 中,委托是一种通过将自身的某个功能交给另一个对象来实现代码重用的技术。通过委托,我们可以将某个属性或方法的实现委托给另一个对象,从而减少重复代码的编写。委托可以用于实现多重继承、代码复用和扩展现有类的功能。 Kotlin 中…

在 Kotlin 中,委托是一种通过将自身的某个功能交给另一个对象来实现代码重用的技术。通过委托,我们可以将某个属性或方法的实现委托给另一个对象,从而减少重复代码的编写。委托可以用于实现多重继承、代码复用和扩展现有类的功能。 Kotlin 中的委托通过关键字 “by” 来实现。委托分为两种:类委托和属性委托。

类委托是将接口的实现委托给另一个类,属性委托是将属性的实现委托给另一个对象。

本文讲解的是使用自定义属性委托来封装 SharedPreferences 的使用


var field by EntrustClass()

这就是比较常见的属性委托了,调用字段 field get()/set() 会对应到委托类 EntrustClass 的 getValue()/setValue()。举个例子:

class EntrustClass(private var name: String) {operator fun getValue(thisRef: Any?, property: KProperty<*>): String {println("调用了getValue() === $name")return name}operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {println("调用了setValue() === $value")name = value}
}fun main() {var field by EntrustClass("张三")field            // 调用了 get()field = "李四"    // 调用了 set()
}Run main:
调用了getValue() === 张三
调用了setValue() === 李四

在第一行属性 field 委托给了类 EntrustClass,字段类型是与委托类 getValue() 的返回值类型相同的

当 field 进行 get()/set() 操作时,就会执行委托类的 getValue()/setValue() 逻辑


这样子就可以把一些冗余的代码操作(比如 SharedPreferences)使用(by)进行封装:

String 类型:

class SpString(private val spName: String, val key: String, private val defValue: String = "") {operator fun getValue(thisRef: Any?, property: KProperty<*>): String {val sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE)return sp.getString(key, defValue)!!}operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {val sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE)sp.edit().putString(key, value).apply()}
}

Boolean 类型:

class SpBoolean(private val spName: String, val key: String, private val defValue: Boolean = false) {operator fun getValue(thisRef: Any?, property: KProperty<*>): Boolean {val sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE)return sp.getBoolean(key, defValue)}operator fun setValue(thisRef: Any?, property: KProperty<*>, value: Boolean) {val sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE)sp.edit().putBoolean(key, value).apply()}
}

其余的类型可以自行拓展


用法:

    private var spBooleanValue by SpBoolean(SP_NAME, "key1")private var spStringValue by SpString(SP_NAME, "key2")private fun getBooleanValue(): Boolean = spBooleanValueprivate fun getStringValue(): String = spStringValueprivate fun setSpValue(value: Boolean) {spBooleanValue = value}private fun setSpValue(value: String) {spStringValue = value}

直接在对象上 get 和 set 即可进行对 SharedPreferences 的读取和写入


在实际的开发当中,会在一个工具类当中进行 SharedPreferences 数据的读写,已经非常好了。但是若数据存储量非常大时,会使得工具类非常臃肿,使用委托封装可以进一步减少冗余代码

http://www.yayakq.cn/news/917978/

相关文章:

  • 网站建设 网址导航产品宣传片
  • 网站做公司转发 wordpress 奖励
  • 做分类信息网站代码博客wordpress主题
  • 天津seo网站推广网站结构怎么做
  • 不用服务器怎么做网站wordpress站安装百度商桥
  • 沈阳做企业网站唐山制作手机网站
  • 对网站开发流程的了解wordpress人性化主题
  • 宁波市北仑区建设局网站在深圳注册公司需要什么资料
  • html5移动网站开发广州哪里可以做网站
  • 东莞有哪些好的网站建设公司衡阳网站备案
  • 上海闸北区网站建设站长工具排名分析
  • wordpress更新不成功济源新站seo关键词排名推广
  • 网站怎么装模版wordpress淘宝客pid插件
  • 泰安网站建设泽讯长沙房产网二手房出售信息
  • 网站开发 视频存储营销排名seo
  • php网站开发套模板步骤关于网站建设的职位
  • 免费网站建设多少钱网站开发和系统开发区别
  • 无锡公司网站建设电话贺卡网图
  • 展示型网站报价docker wordpress
  • 百度搜索网站怎么做网页微信下载
  • 安徽省卫生计生网站医共体建设杭州网页设计培训课程
  • 如何创建自媒体手机网站新乡网站建设制作
  • 有名的网站建设注册餐饮公司流程和费用
  • 计算机企业网站建设论文wordpress 收费会员
  • 广西网站建设哪家有四川达州网站建设
  • 北京营销型网站建设哪家好邢台学校网站建设价格
  • 建设网站用哪种语言小程序app怎么做
  • 怎么向网站添加型号查询功能网店装修实训报告
  • 南宁网站推广排名企业网站建设情况 文库
  • 手机网站用什么语言开发做阿里巴巴网站公司