1. apply 方法
当我们想使用如下形式的表达式时,我们通常会定义和使用对象的apply方法
Object(参数1 , 参数2,...) ,例如 Array("one" , "two" , "three"). 我们来看如下例子,来解读apply方法和构造器的区别
apply方法与构造器上述代码实现一个新建账号的一个功能 , 分别展示了主构造器 与 apply方法 我们可以通过以下两种方式来实现:
val account = new Account(23456, 200.0) // 对应调用的构造函数
val account = Account(23456, 200.0) //对应调用的apply方法
有人会问,有了构造函数,为什么还要用apply方法,主构造函数和辅助构造函数,不是适应多种参数类型的方法调用吗? 答案是肯定的, 主构造函数+ 辅助构造函数确实能够实现和apply方法一样的功能。 但是 我们使用apply方法能够更加简洁。 比如我们想使用嵌套表达式,如下
Array(Array(3) , Array(4 , 5) , Array(6, 7, 8) ).
这种时候就体现出apply方法的作用来, 构建对象是可以直接使用Array(3)的方式 来构建一个含有元素3 的数组对象。 不需使用 new Array(1) , 然后在赋值的方式。
注: Array(3) 和 new Array(3) 是表达不一样的含义, Array(3) 创建了一个含有一个元素3 的数组,而 new Array(3) 则是 创建了一个 函数三个元素为 NULL 的 数组。
总结: 使用apply方法 ,你可以 实现Object(参数1 , 参数2,...) ,Object为你定义的类名或对象名称 在上述例子中为account , apply方法可以让你 Object(参数1 , 参数2,...) 方式来定义你自己想实现的功能。也就是说apply方法体内可以调用构造器进行初始化, 可以定义你自己的方法体。他和 其他方法没什么不同, 唯一区别是他可以显示调用(对象.apply()),也可以通过Object(参数1 , 参数2,...)。 而构造器的作用式在 new 一个对象的时候进行对象初始化的时候使用。
Scala 简书第一篇, 写的不好, 不全,以后陆续总结吧。
网友评论