每天学一点Scala之apply方法

简介:
  • apply方法一般什么地方出现

        此方法一般在伴生对象中实现的

  • 目的:

        改变了创建伴生类实例的方式,不再通过new的方式,而是直接使用类名() 的方式,scala底层会隐式的调用apply方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package  com.xej.learning.apply
 
/**
   * apply方法: 就是创建对象时,不再使用new的形式,而是直接使用了类名()的形式
   */
private [apply]  class  Storm
object  Storm{
    //创建伴生类的对象时,会隐式的调用这个的
    def  apply :  Storm  =  new  Storm()
}
private [apply]  class  Kafka( val  name :  String)
object  Kafka{
    //由于伴生类的主构造器是有参数的,
    //因此,这里,也必须有参数的
    def  apply(name :  String) :  Kafka  =  new  Kafka(name)
}
 
object  ApplyTest {
    def  main(args :  Array[String]) :  Unit  =  {
       val  storm  =  Storm
       val  kafka  =  Kafka( "kafka" )
    }
}

marathon源码中,同样大量使用了这种形式,如:

wKiom1morjrAOtRjAADPtPKhkqY974.png-wh_50















本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/1961584 ,如需转载请自行联系原作者



相关文章
|
分布式计算 Scala Spark
Scala【集合常用方法和函数操作(下)】
Scala【集合常用方法和函数操作(下)】
|
分布式计算 Scala Spark
Scala 【集合常用方法和函数操作-上】
Scala 【集合常用方法和函数操作-上】
|
Java Scala
Scala 方法与函数
Scala 方法与函数
155 1
|
前端开发 Scala
Scala并发编程的react、loop方法详解
在这个例子中,`MyActor`会无限循环接收和处理消息。当收到一个字符串消息时,它会打印出"Received: "加上消息内容。如果收到其他类型的消息,它会打印"Unknown message"。
140 1
|
前端开发 Scala
Scala并发编程的react、loop方法详解
在这个例子中,`MyActor`会无限循环接收和处理消息。当收到一个字符串消息时,它会打印出"Received: "加上消息内容。如果收到其他类型的消息,它会打印"Unknown message"。
133 0
|
Scala
【收藏】Scala常用方法(笔记)
【收藏】Scala常用方法(笔记)
192 0
|
Scala 容器
Scala学习--day04--集合、常用方法、案例实操 - WordCount TopN、不同省份的商品点击排行
Scala学习--day04--集合、常用方法、案例实操 - WordCount TopN、不同省份的商品点击排行
225 2
|
Scala
Scala函数和方法
Scala函数和方法
110 1
|
机器学习/深度学习 分布式计算 Java
Scala方法和函数
Scala方法和函数
253 0
|
Java 编译器 Shell
scala中的变量、方法、函数
Scala是一门多范式的编程语言,一种类似java的编程语言,是可扩展语言,并集成面向对象编程和函数式编程的各种特性的混合功能编程语言。 Scala被编译后在Java虚拟机上运行。
393 0
scala中的变量、方法、函数