【Scala学习笔记】隐式转换的两种实现方式

1.方式一:通过伴生对象实现


//这个普通人
class Man(val name : String)


object Man{
  //普通人想体验超人的功能,在普通人的伴生对象中定义一个隐式转换的方法进行转换
  //a1 这个名字也可以起其他的   
  implicit def a1(man:Man) = new SuperMan(man.name)
}

//这是超人
class SuperMan(val name : String){
  def makeMiracles = println(this.name+"WOW WOw,i am superman")
}

object HelloImplicit1 {
  def main(args: Array[String]): Unit = {
    val man = new Man("Scala")
    man.makeMiracles
  }
}

2.方式二:写一个专门的类用于转换,需要手动导入方式


//这个普通人
class Man (val name : String)

//这是超人
class SuperMan(val name:String){
  def makeMiracles = println(this.name+"WOW WOw,i am superman")
}

//写一个专门的类来转换
object Myimplicits{
  implicit def man2SuperMan(man:Man) = new SuperMan(man.name)
}

object HelloImplicit2 {
  def main(args: Array[String]): Unit = {
    //导入上面定义的转换类
    import implicittest.Myimplicits._
    val man = new Man("Scala")
    man.makeMiracles
  }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 8,807评论 1 24
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,355评论 9 118
  • 几天前,从学校的map上了解到一个师兄,姓房名日天,宛如一个诗人般在我身边存在着,也让我瞬间感觉到,大学可以忙...
    Baymaxm阅读 1,768评论 1 3
  • 随平桥区一行60人,来到东北师大,参加为期一周的校长培训。 按照日程安排,培训第一天由两位博导分别是刘...
    杨仁珮001阅读 3,685评论 0 0
  • 今天公司又是很忙的一天,我带着儿子去公司,然后下午带着孩子去参加公益课,2018让爱回家,这都是偷时间。一...
    张吉钢妈妈阅读 936评论 0 0