业务定义

  • 对于属性,我们可以读取(get)和赋值(set),在Java中会定义get和set方法来操作属性,Kotlin的属性建议直接操作,一些业务的要求会对属性有额外的功能需求,在Java中会在get和set中做逻辑去实现功能需求,kotlin叫做属性委托,单独承载这部分业务,由于set和get的代码复杂性太高了。
  • kotlin中独立定义了几个特定场景的委托,lazy,Observable,Vetoable这三种,lzay是针对get,后两种针对set方法的特定处理。
  • 也可以自定义委托,实现operator fun getValue/operator fun setValue方法即可,对应的接口是ReadOnlyProperty和ReadWriteProperty
  • 除了上述接口也可以委托提供operator fun provideDelegate方法的类

用于元编程

  • 元编程是一个重要的概念,使用编程语言创建编程语言的方法,jastadd就是一种java切面式元编程语言

Kotlin属性委托的更多相关文章

  1. Kotlin属性委托系统总结与提供委托详解

    属性委托总结回顾: 在前三次已经将Kotlin委托相关的知识点进行了完整的学习了,具体博文如下: https://www.cnblogs.com/webor2006/p/11369019.html h ...

  2. Kotlin的属性委托:无上下文情况下Android的赋值(KAD 15)

    作者:Antonio Leiva 时间:Mar 9, 2017 原文链接:https://antonioleiva.com/property-delegation-kotlin/ 如我们在前面文章中读 ...

  3. Kotlin属性揭秘与延迟初始化特性

    在上一次https://www.cnblogs.com/webor2006/p/11210181.html学习了Kotlin的伴生对象,这次来学习属性相关的东东. 属性揭秘: 先声明一个属性: 没啥可 ...

  4. kotlin标准委托之阻止属性的赋值操作

    import kotlin.properties.Delegates fun main(arg: Array<String>) { val user = user() user.name= ...

  5. kotlin标准委托之可观察属性

    所谓可观察属性就是当属性变化时可以拦截其变化,实现观察属性值变化的委托函数是Delegates.observable.该函数接受二个参数,第一个是初始化值,第2个属性值变化事件的响应器.每次我们向属性 ...

  6. Kotlin属性引用进阶与构造方法引用

    继续还是探讨Kotlin反射相关的知识点,说实话这块不是太好理解,待在实际工作中去对它进行实践慢慢来加深印象. 属性引用进阶: 在Kotlin中的反射其实是跟Java的反射有对应关系的,具体相关的定义 ...

  7. Kotlin属性引用详解

    继续来学习Kotlin反射相关的,这次主要是跟反射属性相关的东东. 属性引用(Property Reference): 属性引用的用法与函数(方法)引用的用法是完全一致,都是通过::形式来引用的.下面 ...

  8. kotlin标准委托之惰性装载

    lazy函数,接受一个lambda表达式作为参数,返回一个Lazy<T> 类型的实例,这个实例可以作为委托,实现惰性加载属性;第一次调用get时,将会执行从lazy函数传入的lambda表 ...

  9. ViewBinding 与 Kotlin 委托双剑合璧

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭 ...

  10. kotlin 委托

    委托模式是软件设计模式中的一项基本技巧.在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理. Kotlin 直接支持委托模式,更加优雅,简洁.Kotlin 通过关键 ...

随机推荐

  1. Vulhub 漏洞学习之:ActiveMQ

    Vulhub 漏洞学习之:ActiveMQ 目录 Vulhub 漏洞学习之:ActiveMQ 1 ActiveMQ反序列化漏洞(CVE-2015-5254): 1.1 漏洞利用过程 2 ActiveM ...

  2. Mac监控键盘输入并执行动作

    背景 电脑的安全是非常重要的,特别是里面的敏感数据,若是被有心之人利用,那后果不堪设想. 所以我们部门定下了一个规矩,谁离开工位要是不锁屏,就可以在部门群发送一个消息:我请大家吃鸡翅. oh,技术出身 ...

  3. Java第四讲动手动脑

    1. 在以上的代码中,main方法调用的是public void println(Object x),这一方法调用了String类的valueOf方法,valueOf方法内部调用Object. toS ...

  4. hashMap的底层数据结构

    本节用于记录Java HashMap底层数据结构.方法实现原理等,基于JDK 1.8. # 底层数据结构 Java hashMap 是采用哈希表结构的(数组+链表 /jdk8后加入红黑树)实现,结合了 ...

  5. 苹果手机iframe高度设定不生效而且无法滑动

    为iframe加个div.d1 .d1{ -webkit-overflow-scrolling: touch; overflow-y: scroll; height: 500px; 最好加上固定的高度 ...

  6. Servlet(服务连接器)

    Servlet(Server Applet):是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据 ...

  7. 1405. 最长快乐字符串 (Medium)

    问题描述 1405. 最长快乐字符串 (Medium) 如果字符串中不含有任何 'aaa', 'bbb' 或 'ccc' 这样的字符串作为子串,那么该字符串就是一个「快乐字符串」. 给你三个整数 a, ...

  8. Python3中Super函数的使用

    Super函数用法 主要用于调用父类函数 代码演示 class A: def __init__(self): self.n = 2 print('此时执行A的自定义函数,self的n值为',self. ...

  9. .Net 6.0:WebAPI配置跨域

    NuGet程序包管理,搜cors,并下载 紧接着在Program中添加代码 builder.Services.AddCors(options =>{ options.AddPolicy(name ...

  10. SFTP实现密钥登陆并上传文件

    什么是SFTP,公开键认证,SFTP可不是FTP协议的扩展,他是基于SSH的文件传输协议. 而当SFTP服务器登录有客户端的公开键时,客户端就可以用自己的私有键去跟服务器握手(handshake)已实 ...