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

网站卡密代理怎么做手表网站代码

网站卡密代理怎么做,手表网站代码,wordpress要不要套餐,查看网站服务器版本1.委托模式 委托模式#xff1a;操作对象不会去处理某段逻辑#xff0c;而是会把工作委托给另外一个辅助对象去处理。 例如我们要设计一个自定义类的来实现Set#xff0c;可以将该实现委托给另一个对象#xff1a; class MySetT (val helperSet: HashSetT操作对象不会去处理某段逻辑而是会把工作委托给另外一个辅助对象去处理。 例如我们要设计一个自定义类的来实现Set可以将该实现委托给另一个对象 class MySetT (val helperSet: HashSetT) : SetT {override val size: Intget() helperSet.sizeoverride fun isEmpty(): Boolean {return helperSet.isEmpty()}override fun iterator(): IteratorT {return helperSet.iterator()}override fun containsAll(elements: CollectionT) helperSet.containsAll(elements)override fun contains(element: T) helperSet.contains(element)override fun contains(element: T) false //自己重写该方法来定制功能fun eat() println(I can eat.) //新增方法 }这样就可以让大部分的方法实现调用辅助对象中的方法少部分的方法实现由自己来重写甚至加入一些自己独有的方法那么MySet就会成为一个全新的数据结构类 2.类委托 如上委托模式的代码实现存在一个弊端如果接口中待实现的方法特别多那么相应每个都去调用辅助对象中的相应方法实现将会特别复杂 这时候在Kotlin中使用by关键字再接上受委托的辅助对象就可以免去之前所写的一大堆模板式的代码了 class MySetT(val helperSet: HashSetT) : SetT by helperSet {override fun contains(element: T) false //自己重写该方法来定制功能fun eat() println(I can eat.) //新增方法 }类委托本质简化实现委托模式所需要写的很多不必要代码 3.类可以委托给对象的情况 可以的情况 a.构造函数中传入 class MyList2(theList: ArrayListString) : ListString by theList { }b.object的属性 class MyList3 : ListString by theList {object theList : ArrayListString() }c.伴生对象中的属性 class MyList4 : ListString by theList {companion object {val theList: ListString ArrayListString()} }d.直接创建对象 class MyList6 : ListString by ArrayList() { }e.调用函数获得对象 fun getDdd() : LinkedListString {return LinkedListString() } class MyList7 : ListString by getDdd() { }不可以的情况 a.字段 class MyList : ListString by theList { //编译报错提示Unresolved reference: theListval theList: ListString ArrayListString() }b.构造函数中的变量 class MyList8 : ListString by theList { //编译报错提示Unresolved reference: theListinit {val theList ArrayListString()} }4.属性委托 属性委托的核心思想是将一个属性字段的具体实现委托给另一个对象去完成 可以看到这里使用by关键字连接了左边的p属性和右边的Delegate类去完成。当调用p属性的时候会自动调用Delegate的getValue()方法当给p属性赋值的时候会自动调用Delegate类的setValue()方法 class MyClass {var p by Delegate() }Delegate的具体实现在Delegate类中我们必须实现getValue()和setValue()这两个方法并且都要使用operator关键字进行声明 class Delegate {var proValue: Any? null//第一个参数用于声明该Delegate类的委托功能可以在什么类中使用//第二个参数是Kotlin中的一个属性操作类可用于扩区各种属性相关的值在当前场景用不着但必须在方法参数上进行声明//返回值可以声明成【任何类型】根据具体的实现逻辑去写就可以了operator fun getValue(myClass: MyClass, prop: KProperty*) : Any? {return proValue}//前两个参数和getValue()相同//最后一个参数表示具体要赋值给委托属性的值这个参数类型必须要和getValue()方法返回值的类型保持一致operator fun setValue(myClass: MyClass, prop: KProperty*, value: Any?) {proValue value} }现在当我们给p属性赋值时就会调用Delegate的setValue()方法当获取p属性的值时就会调用Delegate类的getValue()方法 如果p属性是使用val关键字声明的那么就不用在Delegate类中实现setValue()方法因为它是常量 参考文章 类声明的右边也能写 byKotlin 的接口委托是这么用的
http://www.hkea.cn/news/14299694/

相关文章:

  • 中小型网站建设多少钱杂志排版设计用什么软件
  • 青岛高端网站开发公司品牌推广和营销推广
  • 杭州建设网站免费有免费可以做的网站吗
  • 建设网站火车票预订丰县建设局规划局网站
  • 网站建设哪些好网站怎么做电脑系统下载
  • 河南省网站备案怎么制作网站一键更新
  • 小游戏网站建设公司xampp安装wordpress
  • 响应式全屏网站模板公司平台网站建设
  • 网站群的建设目标推广做网站怎么样
  • 建设网站入什么科目wordpress zw
  • 报社网站建设之思考江苏常州网站建设公司
  • 做自己的网站给人的启发房地产开发公司名字
  • 网站建设公司广告语宣传语近几天发生的新闻大事
  • 钦州网站推广东莞企业网站建设费用
  • 济南建站方案体育新闻最新消息世界杯
  • 微信网站案例网站建设费是什么意思
  • 江苏省建设执业资格中心网站免费咨询怀孕医生
  • 三门峡市住房建设局网站wordpress centos7
  • 东乡网站建设百度广告推广价格
  • 网站界面 ui 设计答案网站建设公司顺义
  • 蒙城网站建设河南网站建设公司价格
  • 手机网站开发用什么框架好网站开发技术项目代码搜索
  • 网站建设嗟商文件灰色行业seo大神
  • 博物馆网站微信公众号建设方案常州建站费用
  • 做网站用c语言吗苏州专业网站建设设计公司排名
  • 禁止域名访问网站网站架构拓扑图
  • 模板之家网站苏州论坛
  • 土木在线推推蛙贴吧优化
  • 装修公司网站制作网站友链外链
  • 公司内部网站建设的意义莱芜聊城网站建设