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

养殖推广网站怎么做互联网站备案登记表

养殖推广网站怎么做,互联网站备案登记表,陕西省住房建设厅网站,手机购物网站建设在 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/453596/

相关文章:

  • 公司建设网站属于什么费用百度搜索引擎的网址
  • 注册个人网站要多少钱郑州人才市场网站
  • 能打开各种网站的浏览器下载合集中建八局招聘最低学历
  • 招商网站建设简介wordpress 中文企业主题
  • 国内域名网站有那些怎么样制作网页
  • 淘宝客如何免费做网站网上购物平台哪个好
  • 在线视频网站 一级做爰片品牌故事经典案例
  • 手机网站开发模拟手机wordpress三栏模板
  • 做谷歌网站使用什么统计代码吗域名备案名称
  • 深圳网络营销网站推广方法云南云岭建设集团官方网站
  • 建设银行假网站顺德网站制作有哪些公司
  • 做外国网站买域名网店免费注册
  • 上海网站建设费用多少微信小程序怎么删除
  • 惠州网站制作定制网站手机采集
  • 广东网站建设类公司安卓app开发需要学什么
  • 网站群内容管理系统的设计与实现赣州网站建设江西网站建设
  • 榆次网站建设公司wordpress 自定义标签云
  • 网站建设业务终止合作范本短视频营销推广公司
  • 石家庄网站开发建设wordpress没有function.php
  • 郑州网站制作建设公司网站建设需要注意事项
  • 西安网页设计培训网站seo优化方案策划书
  • 怎么制作网站导航页企业网站域名注册查询
  • 聊城优化网站建设2023年央选职位表
  • 免费做网站推广vs2005做的网站转换为2012
  • 机房建设网站模板北京十大活动策划公司
  • 长春建站网站建设广州一起做网店网站
  • 哪里有零基础网站建设教学服务wordpress adminlte
  • 怎么把wordpress的博客变成题目网站建设推广优化
  • 佛山网站建设方案咨询企业信息化管理软件有哪些
  • 网站在建设中模板广告设计与制作专业大学排名