【Scala快速入门】--apply语法糖

apply语法糖的功能及实现

  • 问题

      val a1 = Array(1,2,3,4,5,6)
      val a2 = new Array[Int](6)
    
    • 到底new不new?

apply方法的功能

  • 可以在实现构建Class的实例的时候,不用写new关键字

apply方法的实现

  • 在伴生对象Object中定义apply方法,支持重载,必须返回Class的实例

  • 当不写new时,编译器会自动判断,在伴生对象中寻找对应的apply方法,通过apply方法new对象来实现

  • 设计思想:缩短函数与对象的距离,让函数成为对象,让对象可以像函数一样使用

  • 代码实现

    class Person02(var name:String) {
      var age:Int = 20
      //辅助构造
      def this(name:String,age:Int){
        this(name)
        this.age = age
      }
    }
    
    object Person02{
      //传递一个参数,进行构造返回
      def apply(name: String): Person02 = new Person02(name)
      //传递两个个参数,进行构造返回
      def apply(name: String,age:Int): Person02 = new Person02(name,age)
    }
    
    object TestPerson02{
      def main(args: Array[String]): Unit = {
        //通过正常的构造来实现对象构建
        val p1 = new Person02("itcast")
        val p2 = new Person02("itcast",30)
        //通过语法糖来实现构造
        val p3 = Person02("heima")
        val p4 = Person02("heima",40)
      }
    }
    

点个赞嘛!在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值