11.Scala中的apply实战详解
来源:互联网 发布:mac的俄语键盘逗号 编辑:程序博客网 时间:2024/06/05 00:26
一、object中的apply实战详解
通过伴生对象的apply来构造类的实例比较常用。
package scala.oopobject Apply_11 { def main(args: Array[String]): Unit = { val a = ApplyTest() //并没有用new,是因为使用其伴生对象object的apply() a.haveATry }}object ApplyTest{ def apply() = { //这里必须写括号 println("object") new ApplyTest }}class ApplyTest{ def apply() = println("class") def haveATry = println("try") println("new")}输出:
object
new
try
二、class中的apply实战详解
object Apply_11 { def main(args: Array[String]): Unit = { val a = new ApplyTest() a.haveATry println(a()) // 调用类的apply() }}
输出:
new
try
class
()
三、总结
val array = Array(1,2,3,4,5) //实际上调用了Array的apply()
一般构建集合都用此种apply方式,好处:
1.若集合嵌套集合,则不需要写很多“new”.很方便简单。
2.构建实例时,若要进行实例对象的单例控制,那么在object的apply()将是个非常好的控制地方。例如可以在apply()中判断是否有身份去构建对象等等
3.若一个类是抽象类(如spark中图计算的抽象类Graph),这个抽象类有个伴生对象(object Graph),这个伴生对象有个apply(),apply()会构建这个抽象类的实例(new GraphImpl() )。
因为抽象类构建实例时不能直接new,所以在这个apply中,就会直接使用这个抽象类的具体实现类去构建抽象类的具体子类的实例。这就是面向接口编程,在apply中写new GraphImpl() ,具体的实现不用apply()操心,由具体子类负责。
阅读全文
0 0
- 11.Scala中的apply实战详解
- scala-11Scala中的apply实战详解
- 011-Scala中的apply实战详解
- Scala学习第十一天 Scala中的apply实战详解
- Scala 深入浅出实战经典 第11讲:Scala中的apply实战详解
- Dt大数据梦工厂王家林老师 Scala实战详解之第11讲 Scala中的apply实战详解
- Scala中的 apply
- 0011.scala中的apply
- scala中的apply()方法
- Scala中的apply方法
- 21.Scala中的偏函数实战详解
- 22.Scala中的闭包实战详解
- scala中的apply和unapply
- Scala深入浅出实战经典:21,Scala中的偏函数实战详解
- Scala深入浅出实战经典:22,Scala中的闭包实战详解
- Scala学习笔记--apply 方法详解
- Scala 中的 apply 和 update 方法
- Scala 中的 apply 和 update 方法
- Mac下python连接mysql数据库
- 数据结构学习系列1-简单单向链表
- javascript基础(1)
- if;if else;if else if 循环结构的用法
- atom + react.js
- 11.Scala中的apply实战详解
- Java编写个人所得税计算机的问题
- 盒子模型
- Spring boot下配置使用redis--注解形式
- 欢迎使用CSDN-markdown编辑器
- java-线程
- hdu1054 Strategic Game(贪心,树形dp,二分匹配)
- 算法系列——Minimum Size Subarray Sum
- 四、LInux——C、GCC、GDB、指针