隐式转换的一点想法
2016-02-29 18:03
267 查看
object App { implicit def toM2(m1:M1): M2 ={ println("m1 to m2") new M2() } class M1 { def method1(): Unit ={ println("invoke method 1") } } class M2() { def method2(): Unit ={ println("invoke method 2") } } def main(args: Array[String]) { val m1 = new M1 //m1本身有method1的方法,一次不需要调用隐式转换 //输出 println("invoke method 1") m1.method1() //m1不存在method2 方法,需要在作用域中寻找隐式转换,正好发现有一个能把m1转换成m2,恰好m2有method方法,那么先执行转换方法,再执行method2 //输出 println("m1 to m2") println("invoke method 2") m1.method2() //m1本身有method1的方法,一次不需要调用隐式转换 //输出 println("invoke method 1") m1.method1() //m1不存在method2 方法,需要在作用域中寻找隐式转换,正好发现有一个能把m1转换成m2,恰好m2有method2方法,那么先执行转换方法,再执行method2 //输出 println("m1 to m2") println("invoke method 2") //需要注意的是,这次又执行了转换方法,这意味着每次执行的独立性. m1.method2() } }
相关文章推荐
- 手机向左滑动删除特效
- HTML5拖动
- 如何保证 数据库/文件 之间的同步
- Cocos2d-x 手游聊天系统Demo实现(Lua实现)
- js对象封装内部图片的相关代码,采用base64图片串
- laravel5.0 升级到 laravel5.1
- VMware Ubuntu 下与Win7共享文件夹
- BaseExpandableListAdapter,二级列表的完全自定义(一)
- h5项目构建
- 图像相似性度量
- 关于随机数---古代赌局
- 杭电1005,能找到规律
- MapReduce:详解Shuffle过程
- mybatis 关联查询只返回一条数据
- Android图片加载框架Glide使用总结
- Windows英文版GitHub客户端使用操作流程图文攻略教程现没中文版
- python Json模块
- 堆和栈的区别
- RHEL下编译OpenCV2和3
- Compile a native C Android application