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

Kotlin 面向对象 - 匿名内部类、匿名内部类简化

匿名内部类

interfaceRequestObserver{funonSuccess(data:String)funonError(error:String)}
funrequestUserInfo(requestObserver:RequestObserver){valrequestResult=trueThread{Thread.sleep(3*1000)if(requestResult){requestObserver.onSuccess("requestUserInfo 请求成功")}else{requestObserver.onError("requestUserInfo 请求失败")}}.start()}
requestUserInfo(object:RequestObserver{overridefunonSuccess(data:String){Toast.makeText(context,data,Toast.LENGTH_SHORT).show()}overridefunonError(error:String){Toast.makeText(context,error,Toast.LENGTH_SHORT).show()}})

匿名内部类简化

funinterfaceSimpleRequestObserver{funonFinish(result:String)}
funsimpleRequestUserInfo(simpleRequestObserver:SimpleRequestObserver){Thread{Thread.sleep(3*1000)simpleRequestObserver.onFinish("simpleRequestUserInfo 请求完成")}.start()}
  1. 当接口只有一个抽象方法时,允许使用 fun 关键字修饰接口,这样可以简化实现,省略 object 关键字
// 冗余的写法simpleRequestUserInfo(SimpleRequestObserver{Toast.makeText(context,it,Toast.LENGTH_SHORT).show()})
simpleRequestUserInfo({Toast.makeText(context,it,Toast.LENGTH_SHORT).show()})
// 等价于simpleRequestUserInfo(object:SimpleRequestObserver{overridefunonFinish(result:String){Toast.makeText(context,result,Toast.LENGTH_SHORT).show()}})
  1. 也可以使用 Lambda 表达式,最简洁的实现
simpleRequestUserInfo{Toast.makeText(context,it,Toast.LENGTH_SHORT).show()}
  1. fun 关键字无法修饰有多个抽象方法的接口
funinterfaceRequestObserver{funonSuccess(data:String)funonError(error:String)}
# 输出结果 Fun interfaces must have exactly one abstract method
  1. 所有 Java 定义的、只有一个抽象方法的接口,都可以自动用 Lambda 表达式,哪怕接口不是用 fun 关键字修饰的
@FunctionalInterfacepublicinterfaceRunnable{publicabstractvoidrun();}
Thread{println("线程运行中:${Thread.currentThread().name}")}.start()
http://www.jsqmd.com/news/382931/

相关文章:

  • 没人陪的情人节的一些杂谈
  • 开发3
  • Supervisor 配置laravel队列常驻
  • 2026年 机箱机柜/钣金机箱机柜厂家实力推荐榜:匠心工艺与工业美学,钣金加工/定制机柜/工业机箱源头企业深度解析 - 品牌企业推荐师(官方)
  • 2026年二手设备厂家推荐榜:二手微波干燥机/钛材蒸发器/化工制药食品饮料设备回收,专业评估与高性价比之选 - 品牌企业推荐师(官方)
  • certbot自动更新证书脚本
  • 2026年 砂磨机厂家实力推荐榜:立式节能/纳米研磨/大型卧式/直驱砂磨机与投料系统,专业研磨设备选购指南 - 品牌企业推荐师(官方)
  • AT_tenka1_2014_final_d 高橋君
  • 集中式网关和分布式网关有啥区别?
  • 个人照片(简历)
  • 2026年塔吊厂家实力推荐榜:小型/重型/大型/高层/移动式/二手塔吊设备专业测评,精选建筑工地施工高效安全之选 - 品牌企业推荐师(官方)
  • Excel情感标注工具:用Python+Flask打造高效数据标注平台 - 教程
  • 2026年 广东安保服务推荐排行榜:专业巡逻执勤、门卫安保与定制化解决方案的卓越之选 - 品牌企业推荐师(官方)
  • PiuPiu酱 2.1.2 | 无敏感限制聊天,虚拟女友,永久限制,免费使用
  • GrokAI1.1.22-release.14 | 实测可无敏感生图,可生成视频
  • Yellow
  • 2026年 东莞空翻特技培训机构推荐榜单:专业空翻/少儿空翻/周末空翻/特训空翻,精选实力机构助力技能飞跃 - 品牌企业推荐师(官方)
  • ABC 445 A - D 题解
  • 2026年 广东保安服务公司推荐榜单:专业保安派遣、临时保安、物业保安、门卫保安全方位服务实力解析 - 品牌企业推荐师(官方)
  • [嵌入式系统-197]:单片机MCU、处理器MPU、DSP、GPU、NPU、SOC全面比较
  • 2026年 脱色絮凝剂厂家推荐排行榜,污水絮凝剂,废水处理絮凝剂,高效净水絮凝剂源头实力品牌深度解析 - 品牌企业推荐师(官方)
  • 某造纸厂案例:TDengine 优化生产过程中的水能消耗
  • TensorFlow——TFLearn 及其安装
  • 虚拟机内部工作机制揭秘:深入解析栈帧
  • 服装企业生产管理ERP的核心要素是什么?
  • AI元人文:隐秘的角落
  • ▲8ASK调制解调+扩频解扩通信链路matlab误码率仿真
  • 2026年东莞搏击训练机构推荐榜:专业/业余/少儿/假期特训,综合格斗与单项技能提升的权威选择 - 品牌企业推荐师(官方)
  • 2026年 授时安全防护装置厂家推荐排行榜,北斗/卫星/网络授时安全防护,电力/工业/通信机房专用,抗干扰防欺骗终端精选 - 品牌企业推荐师(官方)
  • Stable Diffusion入门指南:从零开始掌握AI绘画核心技术 - 指南