Scala基础四

隐式转换

  隐式转换就是将原来类没有的功能,给他加上新的功能。在项目中能不用就不用,会涉及到不好阅读。比如以下功能,原来狗是没有说话的能力,加上说话的功能。

一个普通的狗:
class Dog(val name:String)
一个会讲话的狗:
class SpeakDog{
  def speak: Unit ={
    println("I am SuperDog")
  }
}

  现在要做的功能,就是将一个普通的狗加上讲话的功能。所以定义一个转换,将一条普通的狗导入,然后将新的讲话狗返回:

object ImplicitAspect{
  //定义隐式转换函数
  implicit def dogToSpeakDag(dog:Dog):SpeakDog = new SpeakDog()
}

  这里有个规范,方法的名称一般是原类To新类。主要这个不是替换,是向原类中增加新类中的功能,关键字:implicit
  这样这条狗就增加了新的功能,那就是叫。

调用:
val dog = new Dog("I am Dog")
dog.speak
dog.name

  这个调用的前提,就是要导入包,不然会报错import com.ruozedata.ImplicitAspect.dogToSpeakDag
  工程上常常把这个转换的方法统一的放在一起,一来便于管理,二来,如果前辈偷偷的定义了,你有看不出来,那么维护起来非常麻烦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值